在GPU上使用MPS(Multi-Process Service)
MPS(Multi-Process Service)允许多个CPU进程共享同一GPU context,这样可以在很多情况下提高GPU利用率和占用率,从而加快计算的速度。
MPS 的使用限制
- 只支持
Linux GPU计算能力大于等于3.5CUDA版本大于等于5.5
本文中,CUDA版本为11.7
启用 MPS
假设在GPU0上启用
1 | sudo nvidia-smi -i 0 -c EXCLUSIVE_PROCESS |
如果运行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 | echo quit | nvidia-cuda-mps-control |
参考和更多信息
https://www.nvidia.cn/content/dam/en-zz/zh_cn/assets/webinars/31oct2019c/20191031_MPS_davidwu.pdf