我知道 nvidia-smi -l 1
将每秒钟提供一次GPU使用(类似于以下内容) . 但是,我很感激 Volatile GPU-Util
的真正含义 . 这是使用的SM数量超过总SM数,占用数量还是其他数量?
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48 Driver Version: 367.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla K20c Off | 0000:03:00.0 Off | 0 |
| 30% 41C P0 53W / 225W | 0MiB / 4742MiB | 96% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla K20c Off | 0000:43:00.0 Off | 0 |
| 36% 49C P0 95W / 225W | 4516MiB / 4742MiB | 63% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 1 5193 C python 4514MiB |
+-----------------------------------------------------------------------------+
1 回答
这是a sampled measurement over a time period . 对于给定的时间段,它报告一个或多个GPU内核活动(即运行)的时间百分比 .
它没有告诉你任何关于使用了多少SM的信息,或者代码是如何“繁忙”,或者它正在做什么,或者它以何种方式使用内存 .
使用微基准标记型练习可以毫不费力地验证上述权利要求(见下文) .
我不知道如何准确定义时间段,但由于它总体上只是一个采样测量(即
nvidia-smi
报告一个采样测量,因为你经常轮询它)我不认为它对于一般用法应该是那么重要或理解该工具 . 对于nvidia-smi
,时间段显然很短,并且不一定与轮询间隔相关(如果指定了一个) . 也可以使用微基准测试技术揭示采样时间段 .此外,"Volatile"一词与
nvidia-smi
中的此数据项无关 . 您误读了输出格式 .这是一个支持我声明的简单代码:
在我的系统上,当我使用命令行参数100运行上述代码时,nvidia-smi将报告99%的利用率 . 当我使用命令行参数1000运行时,nvidia-smi将报告~83%的利用率 . 当我使用命令行参数10000运行它时,nvidia-smi将报告约9%的利用率 .