用UTS gpu集群

Prerequisites

Accept offer、拿到学号、激活邮箱,可登录 myStudentAdmin 验证。登录服务器用的帐号是要另外申请、邮件告知的,但密码跟登 myStudentAdmin 是同一个。

国内/校外访问要连 UTS 的 client。有两个:[3] 是 FortiClient,而 [4] 是 F5 Edge Client。[3] 那个好像连不了超算(不知道有没有记错,没有重新测试过),用 [4] 的可以,所以跟 [4] 步骤装软件、连 就好(UTS 的页面 firefox 好像刷不出内容,可以试下用 chrome)。后续步骤都要连着操作,连申请帐号都要。

Request an iHPC Account

参照 [4],在 iHPC 主页[6] -> Account Request,填资料,submit,然后等他们创号(我等了几分钟,挺快),好了会发到 UTS 邮箱,有几封,其中一封 iHPC Admin 发来的邮件底部会告诉超算的用户名:
用UTS gpu集群_第1张图片
Username 是登 iHPC 主页[6]、shell 连服务器的用户名;Password 那「standard UTS password」就是登 myStudentAdmin 那个密码。

Usage

在 [6] -> Login 登录,就会跳到 iHPC Overview[7],可以看到当前各集群的使用状态。集群是用行星命名的,如 Jupiter、Mars 等。点 Documentation 有介绍。

connecting

Access And Connectivity 介绍连集群的方法,其中命令行连看 Connecting via SSH Command Line[8]。几条基本信息:

  • IP / host name:access.ihpc.uts.edu.au,是登录节点/堡垒机
  • 用户名:前文邮件发那个
  • 密码:登 myStudentAdmin 那个

连进登录机后,参考 [8],可用 cnode 命令看集群信息(其实可以直接在 iHPC Overview 看?);选好要连的集群之后用 ssh <集群名> 连去相应集群,集群名在 iHPC Overview 有列出,如 mars1

有两个集群好像要另外申请才能连:Jupiter、Saturn,详见 [8]。

可以配 ssh 免密登录,然后用 VS Code 连。

file stores

Getting Started[9] -> File Stores、File Systems[10] 有介绍存储空间,应该都是指连去特定集群后的空间,而不是登录机的。主要关注几点:

  • [10] 有讲各位置是否持久化目录(Survive Reboots? ),即重启之后数据保不保留;也讲是网盘还是本地盘(影响 IO 时间)。
  • home 目录(~):是各集群同步的,见 [9],所以 ssh 只在一个集群上配一次就好,会自动同步。只有 32G。
  • /data/:也会同步,大很多,[9] 说限 1024G,可用来放数据和结果。
  • /share:也会同步,所有人可读写。
  • /scratch:所有人可读写的目录,[9] 说是说本地盘,所以 IO 会比 /data 快,但空间小一些,不用时要及时删东西省位。

environment

  • 有 screen(复用终端
  • 有网,连进集群之后可以直接连 github、gitee,也可以直接 wget 下 conda、用 pip、conda 装包。
  • cuda、cudnn 等 gpu 基础软件齐全,见 GPU Computations,在集群里 ls /usr/local 得:
    AnsysEM                 Cytoscape-3.9.1          nccl-2.15-11.8
    apptainer-1.1.9         DassaultSystemes2022     nccl-2.16-11.0
    arb-6.0.6               dock6                    nccl-2.16-11.8
    bin                     eclipse                  nccl-2.16-12.0
    blender-3.3.2           eeglab2022.1             nccl-2.6-10.0
    chimera-1.16            ESI_Software_2019.5      nccl-2.8-10.1
    cluster_reporter        ESI_Software_2021.5      nccl-2.8-11.1
    CodeBlocks-Fortran-1.7  etc                      nccl-2.8-11.2
    comsol61                FastQC                   nccl-2.9-11.3
    containers              feko                     NetLogo-6.3
    CST_STUDIO_SUITE_2022   Fiji.app                 openblas-0.3.21
    cuda-10.0               fragpipe                 openmpi-intel-4.1.1
    cuda-10.1               fragpipe16               ParaView-5.11.0
    cuda-10.2               FreeCAD                  Perseus
    cuda-11.0               games                    protobuf-3.19.6
    cuda-11.1               gephi-0.10.1             pycharm-community-2022
    cuda-11.2               gsl-2.7                  quantlib-1.27.1
    cuda-11.3               hyperworks               R-3.6
    cuda-11.4               IGV-2.15.4               R-4.1
    cuda-11.5               ImageJ                   R-4.2
    cuda-11.6               include                  R-4.3
    cuda-11.7               lib                      rstudio-2022
    cuda-11.8               lib64                    rstudio-2023
    cuda-12.0               libexec                  SAS-9.4
    cudnn7.6-10.0           matlab2020b              sbin
    cudnn8.0-10.1           matlab2021a              share
    cudnn8.2-10.2           matlab2021b              singularity-3.8.7
    cudnn8.2-11.4           matlab2022a              singularityce-3.10.5
    cudnn8.3-10.2           matlab2022b              Slicer-5.2.1
    cudnn8.3-11.5           matlab2023a              SPSS
    cudnn8.4-10.2           MaxQuant                 src
    cudnn8.4-11.6           MeshLab                  stata17
    cudnn8.5-10.2           NAG                      stata18
    cudnn8.5-11.7           ncbi-blast-2.13.0+       tecplot
    cudnn8.6-10.2           ncbi-blast-ihpc-2.13.0+  TensorRT-8.5-10.2
    cudnn8.6-11.8           nccl-2.11-11.4           TensorRT-8.5-11.8
    cudnn8.7-10.2           nccl-2.11-11.5           vmd-1.9.3
    cudnn8.7-11.8           nccl-2.12-11.6           VSCode-linux-x64
    cudnn8.8-11.8           nccl-2.14-11.7           weka-3.8.6
    cudnn8.8-12.0           nccl-2.15-10.2           Wolfram
    

singularity

如果有包装不了(如 pytorch 1.2.0),可以用 singularity 容器,基本用法、创建文件 recipe 写法、build 方法见 [17-21]。

在 UTS 的机器上写 recipe、build 都有些要另外注意的。recipe 示例,[21] 说 %post 中要加两句:

  • export DEBIAN_FRONTEND=noninteractive:当创建基于 ubuntu / debian 的容器时要;
  • mkdir -p /data /projects /scratch:这 3 个路径都是 UTS iHPC 的机器中有的,在 iHPC 机器上跑的 singularity 都会自动尝试挂载它们,要保证镜像中有这几个文件夹。
# py36_pt120
Bootstrap: docker
From: pytorch/pytorch:1.2-cuda10.0-cudnn7-runtime

%labels

Python 3.6.9
CUDA 10.0
cuDNN 7
PyTorch 1.2.0
torchvision 0.4.0

%post

# required by UTS iHPC
export DEBIAN_FRONTEND=noninteractive
mkdir -p /data /projects /scratch

# python packages
pip install --upgrade pip setuptools wheel
pip install --no-cache-dir \
    "scikit-learn>=0.23.2" "munkres>=1.1.4" "opencv-python==4.3.0.38" "numpy>=1.19.1" \
    click Cython easydict fire graphviz h5py matplotlib \
    ninja pandas PyYAML scipy tensorboard xlwt

build 的时候,[20] 说因为没有 root,[19] 的普通 build 命令可能不行,要用 [21] 的 builder,而 recipe、创建的镜像文件都要在 /scratch 下。步骤:

  • 连去某个集群,如 ssh mars1。后面创建要用 singularity_build 脚本,集群中才有,登录节点没有;
  • 将 recipe 复制去 /scratch/ 下的某个路径,如 /scratch//cd 过去;
  • 执行 singularity_build,提示、步骤参考 [21]:
    • Select the process you wish to perform,选 1Build from Recipe File);
    • Enter the full path of recipe file,按提示输入 recipe 的绝对路径,如 /scratch//py36_pt120
    • Do you wish to edit this recipe file using Vim? [y…n],问你要不要编辑 recipe,yn 跳过;
    • Select Container Type,一般选 1Image),如果要编译 cuda 代码(可能指 StyleGAN 那种有自写 cuda 文件的?)就选 2Image-nv)。其实感觉可以无脑选 2
    • Enter the name of the output container,创建的镜像像文件名,用写后缀名。如写 py36_pt120 则输出的文件就是 py36_pt120.sif
    • 等,创建完又会回到第一步,可以 10To exit)退出;
    • 将创建的镜像文件移去 /share/ 下,因为会同步,方便各结点调用。

用容器跑程序:singularity exec --nv /share/$(whoami)/py36_pt120.sif python main.py;或写一个驱动脚本(singu-run.sh),套娃执行真正的实验脚本(my_experiment.sh):

#!/bin/bash
# singu-run.sh

IMAGE_F=/share/`whoami`/py36_pt120.sif

if [ -z $1 ]; then echo Please specify script to run; exit; fi
if [ ! -f $1 ]; then echo No such file: $1; exit; fi
singularity exec --nv $IMAGE_F bash $1

然后:bash singu-run.sh my_experiment.sh

Sieving Clusters

想像 [11] 一样,用脚本筛选能用的集群。首先 cnode all 的输出形如:

*******************************************************
*               Welcome to the iHPC                   *
*                                                     *
*    To connect to a node use the ssh command         *
*    (eg. ssh mars6).                                 *
*                                                     *
*******************************************************
 
   Node   Index	 Connect  %CPU	 %Mem	 %GPU	 %GPU Mem   User(s) 
 jupiter1   3      no	  100.0	 11.4	 	 	    edehghan,dmartins
    mars1   3      no	   0.5	 4.9	 0.0%	 0.1%	    xwang12,mfeizi
   mars24   2     yes	   1.6	 5.3	 0.0%	 0.1%	    aetminan
 mercury8   0     yes	   0.5	 7.7	 0.0%	 0.3%
(...更多...)
  • Node 是 host name,用 ssh 连;
  • Connect 表明能不能连,因为每个集群最多同时连两个人,User(s) 是正在连的用户;
  • %GPU 是 gpu load、%GPU Mem 是显存占比,如果集群无 gpu 则此两列为空,如 jupiter1

command

cnode all | \
	awk 'NR > 10 && NF > 6 {print $1" "$3" "$6" "$7}' | \
	grep -v 'jupiter' | grep -v 'saturn' | \
	grep yes | \
	awk '{print $1" "$3" "$4}' | \
	sort -n -k 2 -k 3

其中:

  • awk 'NR > 10 && NF > 6 {print $1" "$3" "$6" "$7}',虑掉前面一些 welcome 输出和元信息(NR > 10)、无 gpu 的行(NF > 6),只输出 NodeConnect%GPU%GPU Mem 4 列(NR 是当前行数;NF 是当前行的列数,默认空格分隔。都从 1 开始);
  • grep -v 'jupite' | grep -v 'saturn' 筛掉 jupiter 和 saturn 的集群,因为要另外申请,还没申;
  • grep yes 选能连的;
  • awk '{print $1" "$3" "$4}' 去掉 Connect 一列;
  • sort -n -k 2 -k 3 升序排序,先按 %GPU,再按 %GPU Mem

Something Else

Building 2 某自习室是升降台,型号是 ICF motion rectangular,发现一开始高度只能升到 780mm 就卡住,不能站着工作。在网页右下角客服聊天那要了一份说明书(instructions),其实高度可调最大范围是 [670, 1320] mm,但它可能根据使用习惯自动定死在一个更小的范围,要重调这个范围。分 set highest / lowest height limit,方法类似:

  1. 同时按 ↑ \uparrow ↓ \downarrow 两秒;
  2. 按住 ↑ \uparrow 同时连按 3 次 ↓ \downarrow 如重置上界),或按住 ↓ \downarrow 同时连按 3 次 ↑ \uparrow 如重置下界);
  3. 然后按 ↑ \uparrow (或 ↓ \downarrow )就可以调到更高(或低)了。

Research student 学校会发一台电脑,同时送电脑包、键鼠套装。键鼠套装是 Dell KM7120W Multi-Device Wirreless Keyboard and Mouse Combo,键盘有 Fn 键,F1 ~ F12 默认不是 F1 ~ F12,而是功能键。想改回默认 F1 ~ F12 的话,参考 [22],按 Fn + Esc,就可以了。

References

  1. UTS访学参考
  2. 如何在UTS iHPC集群上配置conda环境
  3. UTS VPN Guide
  4. iHPC - Creating an account
  5. High Performance Computing,超算介绍,「Access to all UTS Systems」一节有导向 [4] 的链接。
  6. UTS iHPC
  7. iHPC Overview
  8. Connecting via SSH Command Line
  9. Getting Started
  10. File Systems
  11. shell监视gpu使用情况
  12. awk打印列数
  13. awk 'NR==1 {print $1} 这句shell语句是什么意思
  14. awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
  15. 在linux系统如何grep过滤中,不包含某些字符串的命令
  16. Linux Shell sort排序常用命令
  17. singularity基本用法
  18. Container Recipes
  19. Build a Container
  20. iHPC Singularity
  21. iHPC Singularity Builder
  22. How to do Fn Lock on Dell Wireless Keyboard KM5221W so F1 - F12 keys work normally?

你可能感兴趣的:(环境,UTS,悉尼科技大学,gpu,集群,服务器)