如何在多个 GPU 节点上获取分配给 SLURM 作业的 GPU ID?
How to get the ID of GPU allocated to a SLURM job on a multiple GPUs node?
当我使用 --gres=gpu:1 选项将 SLURM 作业提交到具有两个 GPU 的节点时,如何获取分配给该作业的 GPU 的 ID?是否有用于此目的的环境变量?我使用的 GPU 都是 nvidia GPU。
谢谢。
您可以通过环境变量CUDA_VISIBLE_DEVICES
获取GPU ID。此变量是分配给作业的 GPU ID 的逗号分隔列表。
Slurm 将此信息存储在环境变量中,SLURM_JOB_GPUS
。
跟踪此类信息的一种方法是在 运行 执行作业时记录所有 SLURM 相关变量,例如(在 Kaldi's slurm.pl 之后,这是包装 Slurm 作业的好脚本)通过在 运行 by sbatch
:
脚本中包含以下命令
set | grep SLURM | while read line; do echo "# $line"; done
您可以检查给定节点的环境变量 SLURM_STEP_GPUS
或 SLURM_JOB_GPUS
:
echo ${SLURM_STEP_GPUS:-$SLURM_JOB_GPUS}
注意CUDA_VISIBLE_DEVICES
可能不对应真实值()。
此外,请注意这也适用于非 Nvidia GPU。
当我使用 --gres=gpu:1 选项将 SLURM 作业提交到具有两个 GPU 的节点时,如何获取分配给该作业的 GPU 的 ID?是否有用于此目的的环境变量?我使用的 GPU 都是 nvidia GPU。 谢谢。
您可以通过环境变量CUDA_VISIBLE_DEVICES
获取GPU ID。此变量是分配给作业的 GPU ID 的逗号分隔列表。
Slurm 将此信息存储在环境变量中,SLURM_JOB_GPUS
。
跟踪此类信息的一种方法是在 运行 执行作业时记录所有 SLURM 相关变量,例如(在 Kaldi's slurm.pl 之后,这是包装 Slurm 作业的好脚本)通过在 运行 by sbatch
:
set | grep SLURM | while read line; do echo "# $line"; done
您可以检查给定节点的环境变量 SLURM_STEP_GPUS
或 SLURM_JOB_GPUS
:
echo ${SLURM_STEP_GPUS:-$SLURM_JOB_GPUS}
注意CUDA_VISIBLE_DEVICES
可能不对应真实值(
此外,请注意这也适用于非 Nvidia GPU。