Index of HPC Resources

CityU HPC资料汇总,持续更新中。

Important notes:

  1. 本文档主要是我在使用CityU of HK 的 HPC时遇到的问题和解决方案的总结,仅供参考。
  2. 不要尝试记住所有东西,只要知道在哪里找到解决方案就可以了。
  3. 本文档会持续更新,欢迎提出建议。

常用指令

  • sinfo:查看集群状态
    • sinfo --all:查看所有节点状态
  • sbatch <script.sh>:提交任务
  • scancel <job_id>:取消任务
  • sacct -j <job_id>:查看任务状态
  • squeue -u <user_id>:查看自己的任务
    • squeue -p special_bios:查看特定分区的任务
1
2
3
4
5
6
salloc -A pa_bios_department \ # 记账账户
-p special_bios \ # 分区
--cpus-per-task=4 \ # 每个任务使用的CPU核心数
-n 1 -N1 \ # 任务数
-t 1:00:00 \ # 任务最长运行时间
--mem=1G # 每个任务使用的内存

脚本模板

文件名:run.slurm

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
#SBATCH -A pa_bios_department
#SBATCH -p special_bios
#SBATCH -J job_name
#SBATCH -o slurm%j.out
#SBATCH -N 1 # 需要的节点数
#SBATCH --ntasks-per-node=1 # 每个节点的任务数
#SBATCH --cpus-per-task=8 # 每个任务使用的CPU核心数
#SBATCH --mem=1024M # 每个任务使用的内存
#SBATCH -t 1:00:00 # 任务最长运行时间

source activate myenv # 激活conda环境
python test.py # 执行的命令

多个task的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
#SBATCH -A pa_bios_department
#SBATCH -p special_bios
#SBATCH -J job_name
#SBATCH -o slurm%j.out
#SBATCH -N 1
#SBATCH --ntasks-per-node=5
#SBATCH --cpus-per-task=4
#SBATCH --mem=1024M
#SBATCH -t 1:00:00

param=($(seq 1 5))

python test.py ${param[$SLURM_ARRAY_TASK_ID]}

运行指令:

1
sbatch run.slurm

使用GPU:

1
2
salloc -A pa_bios_department -p special_bios --cpus-per-task=6 -n 1 -N1 -t 5:00:00 --mem=128G --nodelist hpc-gpu005 --gres=gpu:1
salloc -p gpu_a100 --cpus-per-task=6 -n 1 -N1 -t 20:00 --mem=128G --gres=gpu:1

检查可用GPU:

1
nvidia-smi

Cheat sheet

Check list

常用网站

我的.bashrc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific environment
# PATH="$HOME/.local/bin:$HOME/bin:$PATH"
PATH="$HOME/.local/bin:$HOME/bin:$HOME/local/bin/R:$PATH"
export PATH

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
module load gcc
module load slurm
module load R
module add anaconda3/

我的.Rprofile

使用服务器自带的R:

1
2
.libPaths(c("$HOME/R/x86_64-pc-linux-gnu-library/4.2", "/opt/R/4.2.2/lib64/R/library"))
options(repos = c(CRAN = "https://mirror-hk.koddos.net/CRAN/"))

使用自己安装的R,需要注释掉 .bashrc中的module load R

1
2
3
4
.libPaths(paste0(Sys.getenv("HOME"), "/R/x86_64-pc-linux-gnu-library/4.2"))
Sys.setenv(http_proxy = "http://proxy.cityu.edu.hk:8080/")
Sys.setenv(https_proxy = "http://proxy.cityu.edu.hk:8080/")
options(repos = c(CRAN = "https://mirror-hk.koddos.net/CRAN/"))

其他事项

  1. 自己的目录只能存50G的文件,大文件可能要存到gpfs1/scratch/USER_NAME目录下.
  2. 服务器的系统版本比较旧,有些R包安装报错找不到xxx.so.xxx文件。这种情况下可以尝试使用conda管理/安装R包。
  3. anaconda的版本也有点旧了,可以自己装一个新的anaconda
  4. 可以使用scratch/ReserachGroups/<YOUR_GROUP>实现组内文件共享。在自己根目录下运行ln -s /gpfs1/scratch/ResearchGroups/<YOUR_GROUP> ~/ResearchGroup建立快捷方式。

Bugs I have met

  1. Segmentation fault (core dumped): 指定的内存不够,或者CPU数量太多。
  2. Github/vscode 使用不正常: 可能是用的人太多,建议早上6点爬起来试一下,如果可以就不是配置问题。另外,vscode的图形化界面和附带的插件会导致卡顿,前面推荐的Warp也可能存在这个问题。尽量用命令行操作。
  3. TODO

我的其他HPC相关文章

  1. 在HPC中实现免密登录
  2. HPC任务依赖的解决方案