矩池雲上使用nvidia-smi命令教程

矩池雲發表於2022-03-11

簡介

nvidia-smi全稱是NVIDIA System Management Interface ,它是一個基於NVIDIA Management Library(NVML)構建的命令列實用工具,旨在幫助管理和監控NVIDIA GPU裝置。

詳解nvidia-smi命令

接下來我介紹一下,用nvidia-smi命令來查詢機器GPU使用情況的相關內容。​
nvidia-smi

我以上圖的查詢內容為例,已經複製出來了,如下,

(myconda) root@8dbdc324be74:~# nvidia-smi
Tue Jul 20 14:35:11 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla P100-SXM2...  On   | 00000000:1C:00.0 Off |                    0 |
| N/A   27C    P0    31W / 300W |      0MiB / 16280MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P100-SXM2...  On   | 00000000:1D:00.0 Off |                    0 |
| N/A   25C    P0    32W / 300W |      0MiB / 16280MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

我們來拆分一下

NVIDIA-SMI 460.32.03          # 
Driver Version: 460.32.03     # 英偉達驅動版本
CUDA Version: 11.2            # CUDA版本
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla P100-SXM2...  On   | 00000000:1C:00.0 Off |                    0 |
| N/A   27C    P0    31W / 300W |      0MiB / 16280MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P100-SXM2...  On   | 00000000:1D:00.0 Off |                    0 |
| N/A   25C    P0    32W / 300W |      0MiB / 16280MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

GPU:                # GPU的編號,0代表第一張顯示卡,1代表第二張,依次類推

Fan:                # 風扇轉速(0%–100%),N/A表示沒有風扇

Name:               # GPU的型號,以此處為例是P100

Temp:               # GPU溫度(GPU溫度過高會導致GPU頻率下降)

Perf:               # 效能狀態,從P0(最大效能)到P12(最小效能)

Pwr:                # GPU功耗

Persistence-M:      #  持續模式的狀態(持續模式耗能大,但在新的GPU應用啟動時花費時間更少)

Bus-Id:             # GPU匯流排,domain:bus:device.function

Disp.A:             # Display Active,表示GPU的顯示是否初始化

Memory-Usage:       # 視訊記憶體使用率(顯示視訊記憶體佔用情況)

Volatile GPU-Util:  # 浮動的GPU利用率

ECC:                # 是否開啟錯誤檢查和糾正技術,0/DISABLED, 1/ENABLED

Compute M.:         # 計算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED

Memory-Usage和Volatile GPU-Util的兩個不一樣的東西,顯示卡由GPU和視訊記憶體等部分所構成,GPU相當於顯示卡上的CPU,視訊記憶體相當於顯示卡上的記憶體。在跑任務的過程中可以通過優化程式碼來提高這兩者的使用率。​

nvcc和nvidia-smi顯示的CUDA版本不同?

(myconda) root@8dbdc324be74:~# nvidia-smi
Tue Jul 20 14:35:11 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla P100-SXM2...  On   | 00000000:1C:00.0 Off |                    0 |
| N/A   27C    P0    31W / 300W |      0MiB / 16280MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P100-SXM2...  On   | 00000000:1D:00.0 Off |                    0 |
| N/A   25C    P0    32W / 300W |      0MiB / 16280MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
(myconda) root@8dbdc324be74:~# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Oct_12_20:09:46_PDT_2020
Cuda compilation tools, release 11.1, V11.1.105
Build cuda_11.1.TC455_06.29190527_0

可以看到nvcc的CUDA版本是11.1,而nvidia-smi的CUDA版本是11.2。這對執行任務是沒有影響的,絕大多數程式碼都是可以正常跑起來的,引起這個的主要是因為CUDA兩個主要的API,runtime API和driver API。神奇的是這兩個API都有自己對應的CUDA版本(如圖上的11.1和11.2)。在StackOverflow有一個解釋,如果driver API和runtime API的CUDA版本不一致可能是因為你使用的是單獨的GPU driver installer,而不是CUDA Toolkit installer裡的GPU driver installer。在矩池雲上的表現可以解釋為driver API來自於物理機器的驅動版本,runtime API是來自於矩池雲映象環境內的CUDA Toolkit版本。

實時顯示視訊記憶體使用情況

nvidia-smi -l 5  #5秒重新整理一次

動態重新整理資訊(預設5s重新整理一次),按Ctrl+C停止,可指定重新整理頻率,以秒為單位

#每隔一秒重新整理一次,重新整理頻率改中間數字即可
watch -n 1 -d nvidia-smi

在這裡不建議使用watch檢視nvidia-smi,watch每個時間週期開啟一個程式(PID),檢視後關閉程式,可能會影響到其他程式。

相關文章