本文共 1230 字,大约阅读时间需要 4 分钟。
本文纯属友情帮忙的产物,在此之前关于GPU只是帮人在linux 64位环境下编译过NAMD。Torque从2.5.4版本起已经支持GPU的调度了,只不过作业调度得用pbs_ched,maui还是不支持。经过大半晚上的摸索,总算是勉强搞定此事。
先说说之前的问题,nodes结点里已经添加了gpu数的描述:gpus=6,pbsnodes也可以看到gpus=6的信息。并且,脚本提交里加了gpus=x的参数后也能调度GPU资源了,但运行之后却发现多个作业都挤在一个GPU上了,显然有问题。说一说我的解决思路吧:
1、torque的编译似乎没什么特别的,首先检查node文件(TORQUE_HOME/server_priv/nodes)的配置:
node1 np=x gpus=y
node2…
pbsnode检查一下,应该能看到关于结点的gpus=y的描述信息。具体可以参考。
2、检查作业提交后是否正确生成了$PBS_GPUFILE,这一步很关键,费了好大劲才查到相关说明,简单写个如下脚本
#PBS -S /bin/bash
#PBS -l nodes=1:ppn=2:gpus=2
echo $PBS_GPUFILE
如正确则应由如下的输出
node1-gpu1
node1-gpu0
表示作业分配到了node1的gpu 0和gpu 1$PBS_GPUFILE一般在/var/spool/torque/aux下放着。
3、第三步,就是怎么用$PBS_GPUFILE内容生成NAMD运行命令的+device参数值,在提交脚本里加入如下语句:
for i in `sed ‘s/node1-gpu//’ $PBS_GPUFILE`;do device=$device$i”,”;done
一个完整的NAMD提交脚本可以写成如下形式:
#PBS -S /bin/bash
#PBS -l nodes=1:ppn=2:gpus=1
for i in `sed ‘s/node1-gpu//’ $PBS_GPUFILE`;do device=$device$i”,”;done
cd /opt/NAMD
/opt/NAMD/charmrun ++local +p2 /opt/NAMD/namd2 +idlepoll +devices $device/path/to/namd-config-file
大概解释一下,+p2对应着ppn=2,而$device的值形如“0,1,”,即将分配给作业的gpu编号用逗号分隔开来,作为+device选项的值。由此就正确的设置了NAMD对GPU的使用。
4、ok了,你可以多提交几个作业,然后用nvidia-smi -a命令查看所有gpu device的使用情况,看跟实际分配情况是否一致。
最后说一句,网上实在没有找到好的解决办法,我仔细测试过此法针对但结点的调度是好使的。多结点应该就没戏了。
转载请注明: 转载自
本文链接: