我可以使用srun --gpus=2
进行粗鲁的作业,它将为分配的GPU设置CUDA_VISIBLE_DEVICES
。但是我不知道检查SLURM分配了特定任务的GPU的方法。如果我运行scontrol show job
,它将显示类似TresPerJob=gpu:2
的内容,但其中不包含分配的实际GPU。
在哪里可以找到此信息?换句话说,我如何查找分配了 n 个GPU的工作?
答案 0 :(得分:1)
当执行nvidia-smi
命令时,您将得到如下内容:
“ 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)
的字段。