一、参考资料

GPU之nvidia-smi命令详解

二、显存与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 |
+-----------------------------------------------------------------------------+

深度学习代码GPU利用率为0 gpu的利用率_深度学习代码GPU利用率为0

这是服务器上特斯拉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窗口