SLURM:如何仅在特定节点上 运行 30 个作业?
SLURM: How to run 30 jobs on particular nodes only?
您需要 运行,比如 30 s运行 个作业,但要确保每个作业都 运行 在特定节点列表(具有相同的性能,以公平地比较时间)。
你会怎么做?
我尝试了什么:
srun --nodelist=machineN[0-3] <some_cmd>
: 运行s <some_cmd>
同时在 all 个节点上(我需要的是 运行 <some_cmd>
在列表中的 一个 可用节点上)
srun -p partition
似乎可行,但需要一个恰好包含 machineN[0-3] 的分区,但情况并非总是如此。
想法?
你可以反方向使用sbatch
的--exclude
选项:
srun --exclude=machineN[4-XX] <some_cmd>
然后 slurm 将只考虑未在排除列表中列出的节点。如果列表又长又复杂,可以保存在文件中。
另一个选项 是检查 Slurm 配置是否包含“功能”和
sinfo --format "%20N %20f"
如果 'features' 列显示每个节点具有的以逗号分隔的功能列表(可能是 CPU 家庭、网络连接类型等),您可以 select使用
具有特定特征的节点子集
srun --constraint=<some_feature> <some_cmd>
您可以使用-w 选项。它在 slurm 版本 17.11.10
中进行了测试
例如:
srun -p partition -w node10 hostname
您需要 运行,比如 30 s运行 个作业,但要确保每个作业都 运行 在特定节点列表(具有相同的性能,以公平地比较时间)。 你会怎么做?
我尝试了什么:
srun --nodelist=machineN[0-3] <some_cmd>
: 运行s<some_cmd>
同时在 all 个节点上(我需要的是 运行<some_cmd>
在列表中的 一个 可用节点上)srun -p partition
似乎可行,但需要一个恰好包含 machineN[0-3] 的分区,但情况并非总是如此。
想法?
你可以反方向使用sbatch
的--exclude
选项:
srun --exclude=machineN[4-XX] <some_cmd>
然后 slurm 将只考虑未在排除列表中列出的节点。如果列表又长又复杂,可以保存在文件中。
另一个选项 是检查 Slurm 配置是否包含“功能”和
sinfo --format "%20N %20f"
如果 'features' 列显示每个节点具有的以逗号分隔的功能列表(可能是 CPU 家庭、网络连接类型等),您可以 select使用
具有特定特征的节点子集srun --constraint=<some_feature> <some_cmd>
您可以使用-w 选项。它在 slurm 版本 17.11.10
中进行了测试例如:
srun -p partition -w node10 hostname