假设我的超级计算机具有以下包含功能的 NODELIST:
NODELIST FEATURES
NodeA (none)
NodeB specialfeature
我正在尝试使用或不使用该specialfeature
功能来对性能进行基准测试。使用测量跑步表现specialfeature
很容易。我只是简单地打电话
sbatch --constraint="specialfeature" mybenchmarktest.exe
上述内容确保我的运行发生在包含该specialfeature
功能的节点(即节点 B)上。但是,如果我想运行基准测试而不specialfeature
遇到问题。呼唤
sbatch mybenchmarktest.exe
意味着 SLURM 可能在 NodeA 或 NodeB 上运行我的任务。这意味着我的基准测试可能无法衡量我想要的结果。
有没有办法确保进程在没有功能的情况下运行?我想象一个类似的电话:
sbatch --contraint="!specialfeature" mybenchmarktest.exe
注意:在这个微不足道的情况下,我知道我可以请求它在 NodeA(没有该功能的节点)上运行,但我正在寻找一种更通用的方法来告诉 SLURM“不要使用这样那样的”。
答案1
目前(从版本 15.8 开始)没有办法以这种方式否定某个功能。唯一的方法是通过以下方式定义补充功能:
NODELIST FEATURES
NodeA nospecialfeature
NodeB specialfeature
然后使用 提交一份工作--constraint=specialfeatures
,然后使用 提交另一份工作--constraint=nospecialfeature
。
如果您无法更改配置,另一种选择是使用如下结构手动构建可接受的主机列表:
sinfo -h --format "%N %f" | grep specialfeature |\
awk '{print $1}' | paste -d, -s | xargs scontrol show hostlist
并将结果与--nodelist
选项一起使用。请随意组合grep
来构建您的列表。