【发布时间】:2020-12-12 16:53:31
【问题描述】:
如果我没有指定任何 --gres=gpu:1 选项,那么该进程将用完计算节点中的所有 GPU。
我们只使用 Slurm 进行 GPU 共享,所以我们希望每个进程都自动分配一个 GPU...是否可以默认指定 srun --gres=gpu:1?
【问题讨论】:
标签: slurm
如果我没有指定任何 --gres=gpu:1 选项,那么该进程将用完计算节点中的所有 GPU。
我们只使用 Slurm 进行 GPU 共享,所以我们希望每个进程都自动分配一个 GPU...是否可以默认指定 srun --gres=gpu:1?
【问题讨论】:
标签: slurm
您可以通过将SBATCH_GRES 环境变量设置为所有用户来为--gres 设置默认值,例如登录节点上的/etc/profile.d。只需在其中创建一个文件,其内容如下:
export SBATCH_GRES=gpu:1
请注意,文档说
请注意,环境变量将覆盖批处理脚本中设置的任何选项
因此,想要使用多个 GPU 或根本不使用 GPU 的人将需要使用命令行选项覆盖此默认值,并且无法在他们的 #SBATCH --gres 行中覆盖它提交脚本。
另一个选项是,默认情况下将所有用户的CUDA_VISIBLE_DEVICES 设置为空字符串。然后,在请求 GPU 的作业中,Slurm 将根据请求修改该变量,并且不发出 GPU 请求的作业将不会“看到”GPU。
如果用户可能会玩系统(CUDA_VISIBLE_DEVICES 变量可以被用户覆盖),那么您必须设置cgroups。
【讨论】:
slurm.conf中的参数SallocDefaultCommand吗?在给我认识的系统管理员的电子邮件中,她告诉我她使用该参数来定义默认的 cpu/gpu/etc 分配。但我在最近版本的 Slurm 中找不到它,可能是在旧版本中......