原HPC的cuda为10.0版本,因此最新只能装torch1.4
,但需要使用更高版本的torch,因此只能尝试更新cuda版本来安装高版本的torch
虽然在/public/software
内安装了cuda10.2
,但显卡驱动版本如下图所示为418.152.00
,最高支持cuda10.1
中南hpc硬件组成 节点数
'''登录到自己的节点后运行下面两行,重新登录终端'''
/public/software/anaconda3/bin/conda init bash #初始化conda环境,须重新登录生效
cp /public/software/anaconda3/condarc ~/.condarc && conda clean -i #配置清华大学conda源
# 重新登录终端后前面将出现(base)
该步骤不执行的话将会报错 Log file not open ./cuda_10.1.243_418.87.00_linux.run: line 512: 55517 Segmentation fault ./cuda-installer
sinfo
salloc -p gpu4Q --qos=gpuq
salloc -N 1 -n 10 -p gpu2Q --gres=gpu:1 --qos=gpuq
申请一个节点十个核心,gpu数量为1的节点334847
,一般还会返回申请到的节点名称,图中返回的是gpu411
,如不返回节点名称,可输入squeue
指令查看已申请的节点,最后一栏NODELIST
即为申请到的节点名称ssh gpu411
切换到刚才申请的节点上bash
,@
后面由ln01变成了gpu411
accept
同意options
选项更改安装位置Toolkit Options
,点第二个create symbolic link
取消建立软连接,取消后如图所示(框中X消失),再点第一个Change Toolkit Install Path
修改安装位置你的文件夹/cuda-10.1
Library install path
下载并解压好cudnn
执行下面命令进行cudnn的安装即可
cp cuda/include/cudnn.h cuda-10.1/include
cp cuda/lib64/libcudnn* cuda-10.1/lib64/
chmod a+r cuda-10.1/include/cudnn.h
因为hpc在启动个人bash时就已经添加了cuda相关的环境变量,但默认的为cuda10.0(详情/etc/profile),在~/.bashrc
添加下面两行,在下次启动的时候自动转为个人用户下的cuda-10.1,下面两行内容前面为系统默认的cuda路径,后面为自己安装的cuda路径,按情况填写即可
PATH=${PATH//"/public/software/cuda10.0/bin"/"/public/home/hpc20*******/cuda-10.1/bin"}
LD_LIBRARY_PATH=${LD_LIBRARY_PATH//"/public/software/cuda10.0/lib64"/"/public/home/hpc20*******/cuda-10.1/lib64"}
设置完成后,执行source ~/.bashrc
即可完成配置,下次登录无需修改和配置
成功后输入nvcc -V
,返回如下
在登录其它节点执行nvcc -V时可能出现还是显示10.0,但其实torch调用的还是cuda10.1,可在python+torch环境下进入执行torch.version.cuda
验证查看,如下图所示
'''创建环境'''
conda create -n torch171 python=3.6 #创建环境
conda activate torch171 #激活环境
安装torch时直接pip install会比较慢,建议本地浏览器或迅雷下载好,下载网址:https://download.pytorch.org/whl/cu101/torch_stable.html
我使用的是python 3.6 则下载py36 linux版本
'''下载好上图两个whl文件后,将其上传至自己的hpc文件夹中,并且在cd到两个whl的位置,依次运行如下两个指令'''
pip install torch-1.7.1-cp36-cp36m-linux_x86_64.whl
pip install torchvision-0.8.2-cp36-cp36m-linux_x86_64.whl
'''安装的过程中会将依赖的其它包安装上'''
在超算上可直接复制他人已有的环境,例如同学A已有配置好的anaconda下的python+torch环境,环境名称为torch171A,B正需要这种环境,在这种硬件条件相同的情况下可以进行环境复制
chmod g+rx /public/home/A
cp -r /public/home/A/.conda/envs/trch171A /public/home/B/.conda/envs/trch171B_copy
chmod g-rx /public/home/A
conda create -n torch171B --clone torch171B_copy
conda activate torch171B
即可使用环境rm -rf /public/home/B/.conda/envs/trch171B_copy
由于当前环境下使用的cuda已变为10.1,因此安装1.x版本不太一样,只需加conda install cudatoolkit=10.0
conda activate ***
conda install cudatoolkit=10.0
pip install tensorflow-gpu==1.13.1
## 测试(先登陆到gpu节点)
python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
scontrol show partition '''显示分区信息 '''
sinfo '''显示队列或节点状态'''
squeue '''查看队列中的作业'''
squeue -u hpc2 '''显示队列中用户hpc2的作业'''
scancel 262 '''取消队列中任务ID为262的作业'''
scontrol show node gpu201 '''显示gpu201节点的详细信息'''
'''其他任务提交指令可参考最后给出的链接'''
srun -n 1 --exclusive -p gpu2Q --gres=gpu:2 --pty bash
# -n 1 一个节点
'''example 2----申请一个启动spyder的作业'''
srun -n1 --exclusive --x11 /public/software/anaconda3/bin/spyder
# --x11 x11 display 用于显示
# example 3------------------------------------
'''example 3----申请一个交互式作业bash 在之后运行spyder'''
srun -n 1 --x11 -p cpuQ --pty bash # --pty bash 为运行bash
# 将会返回一个 新bash(还在当前窗口的命令行) 再运行spyder
srun /public/software/anaconda3/bin/spyder
'''example 4----申请独占节点(双卡gpu)交互作业 并运行pycharm'''
srun --exclusive -n 1 --x11 -p gpu2Q --gres=gpu:2 --qos=gpuq --pty bash
# --gres 一般资源
# qos 质量 使用gpu时需指定
# 返回新的bash命令行 例如这个返回 (base) [hpc204612128@gpu207 bin]$
# -p gpu2Q -p为partition gpu2Q在sinfo中输出可查
sh pycharm.sh
salloc -N 1 -n 10 -p gpu4Q --gres=gpu:2 --qos=gpuq --pty bash #一个节点十个核心
salloc -N 1 -n 10 -p gpu4Q --gres=gpu:2 --qos=gpuq
# 假设申请到的节点是gpu406,则
ssh gpu406 # 切换至该节点
基于中南大学高性能计算平台搭建深度学习平台
中南大学高性能计算平台-常见问题列表
中南大学高性能计算平台-快速使用指南
中南大学高性能计算平台-培训资料
中国科大超算中心-Slurm作业调度系统使用指南
北京大学高性能计算平台-使用指南
利用Slurm作业调度系统运行深度学习python文件