分配给 SLURM 作业的核心

Cores assigned to SLURM job

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

node02:7
node06:14
node09:3

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

scontrol show jobid -dd

在其输出中存储了上述信息(连同大量其他详细信息)。 有没有更好的方法来获取此信息?

提前致谢, 洛伦佐

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

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

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

srun hostname -s > $MACHINEFILE

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