在GPU上使用MPS(Multi-Process Service)

MPS(Multi-Process Service)允许多个CPU进程共享同一GPU context,这样可以在很多情况下提高GPU利用率和占用率,从而加快计算的速度。

MPS 的使用限制

  • 只支持Linux
  • GPU计算能力大于等于3.5
  • CUDA版本大于等于5.5

本文中,CUDA版本为11.7

启用 MPS

假设在GPU0上启用

1
2
3
sudo nvidia-smi -i 0 -c EXCLUSIVE_PROCESS
export CUDA_VISIBLE_DEVICES=0
nvidia-cuda-mps-control –d

如果运行nvidia-cuda-mps-control –d时显示:
Cannot find MPS control daemon process
可以考虑先运行nvidia-cuda-mps-control –f,然后终止,再运行nvidia-cuda-mps-control –d,具体原因未知。

查看 MPS

1
ps -ef | grep mps

上述命令应该可以看到nvidia-cuda-mps-control –d这个进程

如果运行一个CUDA程序,使用nvidia-smi,应该可以看到类型一行中为M+C

关闭 MPS

1
2
echo quit | nvidia-cuda-mps-control
sudo nvidia-smi -i 0 -c DEFAULT

参考和更多信息

https://www.nvidia.cn/content/dam/en-zz/zh_cn/assets/webinars/31oct2019c/20191031_MPS_davidwu.pdf