一、参考资料
二、显存与GPU
2.1显存与GPU介绍
显存使用率和GPU使用率是两个不一样的东西,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。我跑caffe代码的时候显存占得少,GPU占得多,师弟跑TensorFlow代码的时候,显存占得多,GPU占得少。
当没有设置好CPU的线程时,Volatile GPU-Util 参数是在反复跳动的,0%,20%,70%,95%,0%。这样停息1-2秒,然后又重复起来。这是因为GPU在等待数据从CPU传输过来,当从总线传输到GPU之后,GPU开始计算,GPU的利用率突然升高。但GPU的算力很强大,所以GPU利用率接下来又会降下来,等待下一个batch的传入。
因此,GPU的利用率瓶颈在内存带宽和内存介质上以及CPU的性能上面。最直接的解决办法,就是更换更好的四代或者更强大的内存条,配合更好的CPU。
2.2 nvidia-smi查看GPU资源
windows系统
# 只显示一次
nvidia-smi
# 每秒刷新一次
nvidia-smi -l 1
Ubuntu系统
# 每秒刷新一次
watch -n 1 nvidia-smi
watch是周期性的执行下个程序,可以监测一个命令的运行结果,并全屏显示执行结果
1.命令格式:
watch[参数][命令]
2.命令功能:
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令
3.命令参数:
-n或--interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。
-d或--differences 用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。
2.3 查看显卡进程
# 查看显卡信息,此方法无法看到进程
nvidia-smi
# 查看显卡信息另一种方法,可看到是否有进程占用显卡
py3smi
三、相关介绍
Mon Jul 20 15:27:24 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50 Driver Version: 430.50 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 1070 Off | 00000000:01:00.0 On | N/A |
| 35% 63C P2 105W / 230W | 7973MiB / 8116MiB | 75% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 2313 G /usr/lib/xorg/Xorg 18MiB |
| 0 2352 G /usr/bin/gnome-shell 50MiB |
| 0 5551 G /usr/lib/xorg/Xorg 202MiB |
| 0 5694 G /usr/bin/gnome-shell 174MiB |
| 0 5732 G /usr/lib/firefox/firefox 3MiB |
| 0 7010 G ...017.1.5/pycharm-2017.1.5/jre64/bin/java 15MiB |
| 0 9020 G /usr/lib/firefox/firefox 3MiB |
| 0 15575 G ...AAAAAAAAAAAACAAAAAAAAAA= --shared-files 225MiB |
| 0 23339 G goldendict 3MiB |
| 0 31446 C ...oyo/anaconda3/envs/django_22/bin/python 7271MiB |
+-----------------------------------------------------------------------------+
这是服务器上特斯拉K80的信息。
- NVIDIA-SMI 430.50 驱动版本;
- Driver Version: 430.50 驱动版本;
- CUDA Version: 10.1 该驱动推荐的CUDA版本;
参数解释
配置项 | 解释说明 |
GPU Name | GPU的名称 |
Fan | N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能达不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的) |
Temp | 温度,单位摄氏度 |
Perf | GPU的性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能 |
Persistence-M | GPU持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态 |
Pwr | Usage/Cap(实际功率/额定功率),GPU能耗 |
Bus-Id | 涉及GPU总线的东西 |
Disp.A | Display Active,表示GPU的显示是否初始化 |
Memory-Usage | 显存使用率,往往是模型的大小以及batch size 的大小决定的 |
Volatile Uncorr. ECC | 关于ECC的东西 |
GPU-Util | GPU利用率,往往跟代码有关,有较多的IO运算、CPU运算会导致GPU利用率变低 |
Compute M | GPU的计算模式 |
四、可能出现的问题
Q: nvidia-smi
不是内部或外部命令
nvidia-smi显示不是内部或外部命令也不是可运行的程序
错误原因:
nvidia-smi没有加入到系统环境变量中
解决办法:
把 C:\Program Files\NVIDIA Corporation\NVSMI
添加到path环境变量中,再重新打开cmd窗口