如何获取分配给多 GPU 节点上的 SLURM 作业的 GPU ID?

问题描述 投票:0回答:3

当我使用选项 --gres=gpu:1 向具有两个 GPU 的节点提交 SLURM 作业时,如何获取为该作业分配的 GPU 的 ID?是否有用于此目的的环境变量?我使用的 GPU 都是 nvidia GPU。 谢谢。

gpu nvidia slurm sbatch
3个回答
5
投票

您可以通过环境变量

CUDA_VISIBLE_DEVICES
获取GPU id。该变量是分配给作业的 GPU ID 的逗号分隔列表。


5
投票

您可以检查给定节点的环境变量

SLURM_STEP_GPUS
SLURM_JOB_GPUS

echo ${SLURM_STEP_GPUS:-$SLURM_JOB_GPUS}

注意

CUDA_VISIBLE_DEVICES
可能与实际值不符(参见@isarandi的评论)。

另请注意,这也适用于非 Nvidia GPU。


3
投票

Slurm 将此信息存储在环境变量中,

SLURM_JOB_GPUS
SLURM_STEP_GPUS

跟踪此类信息的一种方法是在运行作业时记录所有 SLURM 相关变量,例如(遵循 Kaldislurm.pl,这是包装 Slurm 作业的一个很棒的脚本),包括以下内容

sbatch
运行的脚本中的命令:

set | grep SLURM | while read line; do echo "# $line"; done
© www.soinside.com 2019 - 2024. All rights reserved.