openpbs环境下GPU版NAMD的作业提交问题

来源:互联网 发布:python可以机器人 编辑:程序博客网 时间:2024/04/26 21:56

本文纯属友情帮忙的产物,在此之前关于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的使用情况,看跟实际分配情况是否一致。

最后说一句,网上实在没有找到好的解决办法,我仔细测试过此法针对但结点的调度是好使的。多结点应该就没戏了。

转载请注明: 转载自Wandering Words

本文链接: http://c-living.mobi/archives/442

原创粉丝点击