我如何知道使用SLURM分配了作业的GPU?

时间:2019-09-09 20:58:24

标签: slurm

我可以使用srun --gpus=2进行粗鲁的作业,它将为分配的GPU设置CUDA_VISIBLE_DEVICES。但是我不知道检查SLURM分配了特定任务的GPU的方法。如果我运行scontrol show job,它将显示类似TresPerJob=gpu:2的内容,但其中不包含分配的实际GPU。

在哪里可以找到此信息?换句话说,我如何查找分配了 n 个GPU的工作?

3 个答案:

答案 0 :(得分:1)

当执行nvidia-smi命令时,您将得到如下内容:

enter image description here

“ GPU”列是通常与系统中的设备(ls /dev/nvidia*)相匹配的GPU的ID。 Slurm在CUDA_VISIBLE_DEVICES环境变量中使用了相同的标识。 因此,在此变量中,您会看到

  

0,1,2

表示已为作业分配了ID为0、1和2的GPU。

答案 1 :(得分:1)

如果您只是在寻找CUDA_VISIBLE_DEVICES设置的口音,我建议使用cat /proc/12345/environ,其中数字是启动的任何口音的PID。

但是,这很容易被srun --export=ALL bash -i之类的东西覆盖,因此在对抗性情况下您不能依赖它。

答案 2 :(得分:0)

scontrol show job -d 可以做到这一点。 -d 标志向输出添加额外信息,其中之一是类似 GRES=gpu(IDX:0-2) 的字段。