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.
如果我没有指定任何 --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.