假设我只想分配一个任务总数(--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/