假设我只想分配一个任务总数(--ntasks = someNumber),而不指定节点数和每个节点的任务,就提交一个slurm作业。有没有一种方法可以在启动的Slurm脚本中知道Slurm为每个保留节点分配了多少个内核?我需要知道此信息,才能为正在启动的程序正确创建一个机器文件,该文件的结构必须如下所示:



作业启动后,我弄清楚查看节点上已分配了哪些内核的唯一方法是使用以下命令:



在其输出中存储了上述信息(以及许多其他详细信息)。
有没有更好的方法来获取此信息?

提前致谢,
洛伦佐

最佳答案

srun文档说明创建机器文件的方式是通过运行srun hostname。要获得输出,您可以运行

srun hostname -s | sort | uniq -c | awk '{print $2":"$1}' > $MACHINEFILE

您应该检查程序的文档,以查看程序是否接受带有重复而不是后缀计数的机器文件。如果是这样,您可以将命令简化为
srun hostname -s > $MACHINEFILE

当然,第一步实际上是要确保您确实确实需要机器文件,因为许多并行程序/库都支持Slurm,并且可以在作业开始时从Slurm设置的环境变量中收集所需的信息。

关于linux - 分配给SLURM作业的核心,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62103911/

10-11 04:30