我如何知道使用 SLURM 分配了哪些 GPU?
How do I know which GPUs a job was allocated using SLURM?
我可以 运行 slurm 上的作业,例如 srun --gpus=2
,它将 CUDA_VISIBLE_DEVICES
设置为分配的 GPU。但是我知道没有这种方法可以检查哪些 GPU SLURM 分配了特定的工作。如果我 运行 scontrol show job
它会显示类似 TresPerJob=gpu:2
的内容,但它不包含分配的实际 GPU。
我在哪里可以找到这些信息?换句话说,我如何查找分配了哪个 GPU 作业 n?
当你执行nvidia-smi
命令时,你会得到这样的结果:
"GPU"列是GPU的ID,通常与系统中的设备(ls /dev/nvidia*
)匹配。 Slurm 在 CUDA_VISIBLE_DEVICES
环境变量中使用了相同的标识。
所以,当你在这个变量中看到
0,1,2
表示该作业已经分配了ID为0、1、2的GPU。
如果您只是想知道 slurm 将 CUDA_VISIBLE_DEVICES
设置为什么,我建议使用 cat /proc/12345/environ
,其中数字是启动的任何 slurm 的 PID。
然而,这可能会被 srun --export=ALL bash -i
之类的东西覆盖,因此在对抗情况下你不能依赖它。
scontrol show job -d
可以做到这一点。 -d
标志向输出添加额外信息,其中之一是像 GRES=gpu(IDX:0-2)
.
这样的字段
我可以 运行 slurm 上的作业,例如 srun --gpus=2
,它将 CUDA_VISIBLE_DEVICES
设置为分配的 GPU。但是我知道没有这种方法可以检查哪些 GPU SLURM 分配了特定的工作。如果我 运行 scontrol show job
它会显示类似 TresPerJob=gpu:2
的内容,但它不包含分配的实际 GPU。
我在哪里可以找到这些信息?换句话说,我如何查找分配了哪个 GPU 作业 n?
当你执行nvidia-smi
命令时,你会得到这样的结果:
"GPU"列是GPU的ID,通常与系统中的设备(ls /dev/nvidia*
)匹配。 Slurm 在 CUDA_VISIBLE_DEVICES
环境变量中使用了相同的标识。
所以,当你在这个变量中看到
0,1,2
表示该作业已经分配了ID为0、1、2的GPU。
如果您只是想知道 slurm 将 CUDA_VISIBLE_DEVICES
设置为什么,我建议使用 cat /proc/12345/environ
,其中数字是启动的任何 slurm 的 PID。
然而,这可能会被 srun --export=ALL bash -i
之类的东西覆盖,因此在对抗情况下你不能依赖它。
scontrol show job -d
可以做到这一点。 -d
标志向输出添加额外信息,其中之一是像 GRES=gpu(IDX:0-2)
.