一台多卡服务器,为提高利用效率,通常有多个用户使用。
假设有一台服务器A,分别有0,1,2,3四张卡,我们有两个用户:甲和乙。
当甲启动卡0时,乙想用卡1,2,3。但是乙的进程一直卡住了,等甲进程完全结束后也未曾启动。白白浪费了其他3倍的GPU hours,人神共愤。但是Debug的时候又不知道问题出在哪里。
那么这篇文章提供一个可能的解决方案:
大概率是因为nvidia-mps进程导致多用户不能同时使用GPU。
解决办法如下:
先查看mps进程号:
ps -ef | grep nvidia
看到:
root 1234 xxx /usr/bin/nvidia-cuda-mps-server
第二列就是进程号,直接用root权限kill掉这个进程:
sudo kill -9 1234
这种情况,几乎就解决了多用户用卡冲突的问题~
另外,如果还想掰细一点,即同一张卡也被多个用户使用,实现最大程度地共享使用,那就设置:
nvidia-smi -i 0 -c DEFAULT
nvidia-smi -i 1 -c DEFAULT
nvidia-smi -i 2 -c DEFAULT
nvidia-smi -i 3 -c DEFAULT
分别将4张卡都设置为DEFAULT
模式。如果想独享某张卡,可以设置为EXCLUSIVE_PROCESS
,假如我想让卡2被独享,则:
nvidia-smi -i 2 -c EXCLUSIVE_PROCESS
有问题请留言交流~