您需要运行30个srun作业,但要确保每个作业都在特定节点列表的节点上运行(具有相同的性能,以便公平地比较时间)。 你会怎么做?
我尝试了什么:
srun --nodelist=machineN[0-3] <some_cmd>
:同时在所有节点上运行<some_cmd>
(我需要的是:在上运行<some_cmd>
列表中的可用节点>
srun -p partition
似乎有效,但需要一个包含精确机器N [0-3]的分区,但情况并非总是如此。
想法?
答案 0 :(得分:9)
您可以朝相反的方向并使用--exclude
的{{1}}选项:
sbatch
然后,slurm将仅考虑未在排除列表中列出的节点。如果列表很长且很复杂,则可以将其保存在文件中。
另一个选项是检查Slurm配置是否包含“功能”和
srun --exclude=machineN[4-XX] <some_cmd>
如果'features'列显示每个节点具有逗号分隔的功能列表(可能是CPU系列,网络连接类型等),则可以使用
sinfo --format "%20N %20f"
答案 1 :(得分:2)
您可以使用-w选项。它已在Slurm版本17.11.10
中进行了测试例如:
srun -p partition -w node10 hostname