![SLURM:将 GPU 访问限制为仅 SLURM](https://linux22.com/image/131424/SLURM%EF%BC%9A%E5%B0%86%20GPU%20%E8%AE%BF%E9%97%AE%E9%99%90%E5%88%B6%E4%B8%BA%E4%BB%85%20SLURM.png)
我有一台带有 4 个 TitanX GPU 的机器(Ubuntu 16.04 Server)。这将是一台实验室机器,学生将在其中学习 CUDA 等知识。我安装 SLURM 是因为我想要一个根据 GPU 可用性自动调度和排队作业的工具。
为此,学生只能通过 SLURM 访问 GPU。有没有办法在单机设置中实现此目的,其中 SLURM 和卡位于同一主机上?
学生只能通过以下方式获取卡:
# srun --gres ...
我知道,CUDA_VISIBLE_DEVICES
但是当 root 甚至每个用户设置时,这个变量会被忽略。它仅在按进程设置时才有效,例如
deviceQuery
来自 CUDA 示例:
# CUDA_VISIBLE_DEVICES=2 /usr/local/cuda-9.0/extras/demo_suite/deviceQuery
而且它可能被 SLURM 本身用来限制卡牌,所以它(而不是)不是一个解决方案。
最好的问候
K.
答案1
创建一个 PrologSlurmctld (https://slurm.schedmd.com/slurm.conf.html#OPT_PrologSlurmctld)脚本,使用 setfacl 将 GPU(/dev/nvidia* 设备)的访问权限设置为当前用户