使用不带功能的 SLURM

使用不带功能的 SLURM

假设我的超级计算机具有以下包含功能的 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来构建您的列表。

相关内容