Xi’an, China: ☀️ 🌡️+6°C 🌬️↑4km/h

写在前面

要完成计算相关的任务,免不了需要云计算服务,有阿里云、腾讯云等,这里我们主要以北京超算提供的CPU和GPU资源为例,快速上手计算任务提交。特别建议:建立test文件夹,用于本地和云服务器上的测试,尽管北京超算提供了相关测试方法,但仍有不便。

module工具基本命令

北京超算主要以module模块对相关软件进行管理,如果存在任何疑问或相关软件需要安装,可直接联系客服7X24h在线

命令 功能 示例
module avail 查看可用软件列表
module load [modulesfile] 加载需要使用的软件 module load cuda/10.0
module show [modulesfile] 查看对应软件的路径等 module show cuda/10.0
module list 查看当前已加载软件
module unload [modulesfile] 移除已加载软件 module unload cuda/10.0
module purge 移除所有已加载软件
module –help 查看module更多命名

注:可以将load常用软件的命令放在~/.bashrc或者写成简单的shell脚本,如下:

  • CPU分区启用常用软件脚本示例
#!/bin/bash

source /public1/soft/modules/module.sh
module purge 
module load anaconda/3-Python3.7.3-wjl tree/1.8.0
source activate automl
conda info --envs
  • GPU分区启用常用软件脚本示例
#!/bin/bash

module purge 
module load anaconda/2020.11 tensorboard/2.3.0
source activate base
conda info --envs

conda基本命令

# 加载anaconda环境
module load anaconda/2020.11

# 创建环境
conda create -n py37 python=3.7

# 已安装环境
conda env list
# conda --info envs

# 激活环境
source activate py37

# 取消激活当前环境
source deactivate py37

# 安装所需软件
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia

# 查看已安装库
conda list

# 删除Python环境
conda remove --name myenv --all
conda env remove --name myenv

CPU 账户A5分区

系统资源简介

超算是独占节点,计费方式是以节点为基本单位。即:如果提交核数不足节点上的核数,也是按满核计费。比如:超算上每个节点有64核资源,提交12核作业,也是按照64核计费。所以建议满核提交,使用的核数要用一个节点核数的整数倍。 以一个节点是 64核的超算为例,脚本里面#SBATCH -n后面的数字要是节点数乘以每个节点的核数,才是充分利用资源。比如用2个节点,采用下面写法: # SBATCH -N 2 # SBATCH -n 128

作业提交脚本示例1

```shell
#!/bin/bash

# 设置节点数
SBATCH -N 1
# 设置节点的核数
SBATCH -n 1
# 设置分区
SBATCH -p amd_256
# 设置每个任务需要的CPU数量
SBATCH -c 64

source /public1/soft/modules/module.sh
module purge
module load ananconda/3-Python3.7.3-wjl
source activate automl
# 确保可以实时看到程序输出而不影响程序运行
export PYTHONUNBUFFERED=1
python test.py

GPU 账户N22分区

系统资源简介

  • 计算资源:每台机器配备8块V100-SXM2 32GBGPU,GPU:CPU:内存比为1GPU卡:8CPU核:36GB内存。
  • 存储资源:home目录用于存放用户环境设置等文件,~/run目录读写性能较好,archive存放访问频率低的数据。

作业提交脚本示例

  • 命令说明:sbatch –gpus=GPU卡数 程序运行脚本
  • 命令示例:sbatch --gpus=1 ./run.sh,其中run.sh脚本示例如下:
#!/bin/bash
module purge 
module load anaconda/2020.11 tensorboard/2.3.0 tree/1.8.0 cudnn/8.1.1.33_CUDA11.2 cuda/11.2
source activate py39
export PYTHONUNBUFFERED=1
python test.py

高级功能:数据集存储至内存文件系统计算

  • 目的:减少数据读取时间,最多程序降低IO瓶颈,发挥GPU最大性能
  • 限制:1卡最多用36GB,8卡最多158GB
  • 操作步骤:
    • 打包数据集:tar -cf datasets.tar datasets
    • 提交脚本中添加:tar -xf datasets.tar -C /dev/shm,解压后的路径路径为/dev/shm/datasets
    • Python代码的数据集路径改为/dev/shm/datasets
    • sbatch提交作业

已提交作业管理

  • 查看作业执行状态:squeue或者parajobs,详细命令参考squeue --help

作业状态参数 表示含义
JOBID 作业唯一标识号
PARTITION 作业运行使用的队列名
NAME 作业名
USER 超算账号名
ST R(Running) PD(Pending) CG(Completing) S(管理员暂时挂起) CD(Completed) F(Failed) 只有R状态计费
TIME 运行时间
NODES 作业使用节点数目
NODELIST(REASON) 对于R作业显示使用的节点列表,PD作业显原因
  • 结束作业:scancel 作业号(JOBID)
  • 查看输出:程序开始运行后,会生成.out文件,使用tail -f file.out 实时查看输出

参考文献: