Linux 系统指定程序运行的显卡
一般租的服务器会有多张显卡,为了资源最大化利用同时运行程序,如果不指定显卡运行会导致多个程序抢占一张显卡运行,然后报错内存占满。我们先查看系统有多少张显卡,每张显卡的运行状态:nvidia-smi在终端输入上面的指令得到下面的结果,显示了系统安装的所有显卡和每张卡当前的状态,比如显卡0当前使用率为81%,已经比较接近占满了。我们观察到1,2,3,4,5都没程序使用,于是指定其中几张,指令如下CUD
·
一般租的服务器会有多张显卡,为了资源最大化利用同时运行程序,如果不指定显卡运行会导致多个程序抢占一张显卡运行,然后报错内存占满。
我们先查看系统有多少张显卡,每张显卡的运行状态:
nvidia-smi
在终端输入上面的指令得到下面的结果,显示了系统安装的所有显卡和每张卡当前的状态,比如显卡0当前使用率为81%,已经比较接近占满了。
我们观察到1,2,3,4,5都没程序使用,于是指定其中几张,指令如下
CUDA_VISIBLE_DEVICES=3,4,1 python train.py
意思为同时用显卡3,4,1运行代码train.py,然后3为主显卡,4和1为辅助显卡。
然后运行即可。
但是我们知道,我们远程连接服务器,输入上面的指令程序运行过程会显示在终端,如果中途网络问题和服务器连接失败,终端可能会关闭,程序运行中断,于是我们想到如下指令:
nohup python train.py &
但是当我们写成
nohup CUDA_VISIBLE_DEVICES=3,4,1 python train.py &
会报错指令不对,所以这个时候最好的办法就是,在train.py程序中加上说明,在代码里面最开始的部分加上如下指令:
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '3,4,1'
这里在代码里面调用终端指令,说明运行的显卡。
希望对你的学习有所帮助。
更多推荐
已为社区贡献1条内容
所有评论(0)