Slurm:默认分配一定数量的 GPU

Slurm: by default assign a certain number of GPUs

如果我没有指定任何 --gres=gpu:1 选项,那么该进程将用完计算节点中的所有 GPU。

我们只使用 Slurm 进行 GPU 共享,所以我们希望每个进程自动分配一个 GPU...是否可以默认指定 srun --gres=gpu:1

您可以通过为所有用户设置 SBATCH_GRES env 变量来为 --gres 设置默认值,例如在登录节点上的 /etc/profile.d 中。只需在其中创建一个文件,其中包含以下内容:

export SBATCH_GRES=gpu:1

请注意文档说

Note that environment variables will override any options set in a batch script

因此想要使用多个 GPU 或根本不使用 GPU 的人将需要使用命令行选项覆盖此默认设置,并且无法使用 #SBATCH --gres 提交脚本中的行。

另一种选择是,默认将所有用户的 CUDA_VISIBLE_DEVICES 设置为空字符串。然后,在请求 GPU 的作业中,该变量将根据请求由 Slurm 修改,而不提出 GPU 请求的作业将不会 'see' GPU。

如果用户有可能玩系统(CUDA_VISIBLE_DEVICES变量可以被用户覆盖),那么你就得设置cgroups.