关于使用-t
qsub
选项究竟是什么,文档有点不清楚
http://docs.adaptivecomputing.com/torque/4-0-2/Content/topics/commands/qsub.htm
来自文档:
-t指定作业数组的任务ID。允许单个任务数组。 array_request参数是整数id或整数范围。 多个id或id范围可以组合在逗号分隔列表中。 示例:-t 1-100或-t 1,10,50-100
这是一个出错的例子,我已经请求了2个节点,每个节点有8个进程,以及16个作业的数组。我希望它可以自然地分布在两个节点上,但是16个任务是在超过2个节点上临时分发的。
$ echo 'hostname' | qsub -q gpu -l nodes=2:ppn=8 -t 1-16
52727[]
$ cat STDIN.o52727-* | sort
gpu-3.local
gpu-3.local
gpu-3.local
gpu-3.local
gpu-5.local
gpu-5.local
gpu-5.local
gpu-5.local
gpu-5.local
gpu-5.local
gpu-7.local
gpu-7.local
gpu-7.local
gpu-7.local
gpu-7.local
gpu-7.local
答案 0 :(得分:1)
我怀疑这不会完全回答你的问题,但你希望完成的目标仍然不清楚。
使用qsub -t
指定数组只会创建具有相同主ID的单个作业。提交您指定的方式将创建16个作业,每个作业请求16个核心。这种语法只是让您更容易一次提交大量作业,而无需编写提交循环脚本。
单独使用Torque(即忽略调度程序),您可以通过以下方式强制作业到特定节点:
qsub -l nodes = gpu-node01:ppn = 8 + gpu-node02:ppn = 8
更高级的调度程序可以为您提供更大的灵活性(例如,Moab或Maui允许" -l nodes = 2:ppn = 8,nallocpolicy = exactnode",它将NODEALLOCATIONPOLICY EXACTNODE
应用于作业在调度时,将在两个节点上分别提供8个核心(在这种情况下,任意两个节点)。)