用UTS gpu集群
Prerequisites
Accept offer、拿到学号、激活邮箱,可登录 myStudentAdmin 验证。登录服务器用的帐号是要另外申请、邮件告知的,但密码跟登 myStudentAdmin 是同一个。
国内/校外访问要连 UTS 的 vpn client。有两个:[3] 是 FortiClient,而 [4] 是 F5 Edge Client。[3] 那个好像连不了超算(不知道有没有记错,没有重新测试过),用 [4] 的可以,所以跟 [4] 步骤装软件、连 vpn 就好(UTS vpn 的页面 firefox 好像刷不出内容,可以试下用 chrome)。后续步骤都要连着操作,连申请帐号都要。
Request an iHPC Account
参照 [4],在 iHPC 主页[6] -> Account Request,填资料,submit,然后等他们创号(我等了几分钟,挺快),好了会发到 UTS 邮箱,有几封,其中一封 iHPC Admin 发来的邮件底部会告诉超算的用户名:

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%labelsPython 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,选
1(Build 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,
y改n跳过; - Select Container Type,一般选
1(Image),如果要编译 cuda 代码(可能指 StyleGAN 那种有自写 cuda 文件的?)就选2(Image-nv)。其实感觉可以无脑选2? - Enter the name of the output container,创建的镜像像文件名,不用写后缀名。如写
py36_pt120则输出的文件就是 py36_pt120.sif; - 等,创建完又会回到第一步,可以
10(To exit)退出; - 将创建的镜像文件移去 /share/ 下,因为会同步,方便各结点调用。
- Select the process you wish to perform,选
用容器跑程序:singularity exec --nv /share/$(whoami)/py36_pt120.sif python main.py;或写一个驱动脚本(singu-run.sh),套娃执行真正的实验脚本(my_experiment.sh):
#!/bin/bash
# singu-run.shIMAGE_F=/share/`whoami`/py36_pt120.sifif [ -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,dmartinsmars1 3 no 0.5 4.9 0.0% 0.1% xwang12,mfeizimars24 2 yes 1.6 5.3 0.0% 0.1% aetminanmercury8 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),只输出Node、Connect、%GPU、%GPU Mem4 列(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,方法类似:
- 同时按 ↑ \uparrow ↑、 ↓ \downarrow ↓ 两秒;
- 按住 ↑ \uparrow ↑ 同时连按 3 次 ↓ \downarrow ↓(如重置上界),或按住 ↓ \downarrow ↓ 同时连按 3 次 ↑ \uparrow ↑(如重置下界);
- 然后按 ↑ \uparrow ↑(或 ↓ \downarrow ↓)就可以调到更高(或低)了。
Research student 学校会发一台电脑,同时送电脑包、键鼠套装。键鼠套装是 Dell KM7120W Multi-Device Wirreless Keyboard and Mouse Combo,键盘有 Fn 键,F1 ~ F12 默认不是 F1 ~ F12,而是功能键。想改回默认 F1 ~ F12 的话,参考 [22],按 Fn + Esc,就可以了。
References
- UTS访学参考
- 如何在UTS iHPC集群上配置conda环境
- UTS VPN Guide
- iHPC - Creating an account
- High Performance Computing,超算介绍,「Access to all UTS Systems」一节有导向 [4] 的链接。
- UTS iHPC
- iHPC Overview
- Connecting via SSH Command Line
- Getting Started
- File Systems
- shell监视gpu使用情况
- awk打印列数
- awk 'NR==1 {print $1} 这句shell语句是什么意思
- awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
- 在linux系统如何grep过滤中,不包含某些字符串的命令
- Linux Shell sort排序常用命令
- singularity基本用法
- Container Recipes
- Build a Container
- iHPC Singularity
- iHPC Singularity Builder
- How to do Fn Lock on Dell Wireless Keyboard KM5221W so F1 - F12 keys work normally?
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
