分配给 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 设置的环境变量中收集所需的信息作业开始时。
假设我想提交一个 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 设置的环境变量中收集所需的信息作业开始时。