[解決済み] nvidia-smi Volatile GPU-Utilization の説明?
質問
私は、以下のことを知っています。
nvidia-smi -l 1
が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 つまたは複数の GPU カーネルがアクティブ (すなわち実行中) であった時間の割合を報告します。
これは、何個の SM が使用されたか、コードがどのくらいビジーであったか、正確に何をしていたか、またはどのような方法でメモリを使用していたかについては、何も教えてくれません。
上記の主張は、マイクロベンチマークタイプの演習 (下記参照) を使用して、それほど困難なく検証することができます。
Nvidia の docs サンプル周期は製品によって1秒から1/6秒の間になることがあります。しかし、この周期は、結果をどのように解釈するかについて、大きな違いを生じないはずです。
また、quot;Volatile" という単語は、このデータ項目には関係ありません。
nvidia-smi
. 出力形式を読み間違えています。
私の主張を裏付ける些細なコードを紹介します。
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
const long long tdelay=1000000LL;
const int loops = 10000;
const int hdelay = 1;
__global__ void dkern(){
long long start = clock64();
while(clock64() < start+tdelay);
}
int main(int argc, char *argv[]){
int my_delay = hdelay;
if (argc > 1) my_delay = atoi(argv[1]);
for (int i = 0; i<loops; i++){
dkern<<<1,1>>>();
usleep(my_delay);}
return 0;
}
私のシステムでは、上記のコードを 100 のコマンド ライン パラメータで実行すると、nvidia-smi は 99% の使用率を報告します。 コマンド ライン パラメータを 1000 にして実行すると、nvidia-smi は ~83% の使用率を報告します。 コマンドライン パラメータに 10000 を指定して実行すると、nvidia-smi は ~9% の使用率を報告します。
関連
-
CUDAドライバのバージョンが、CUDAランタイムのバージョンに対して不足している問題
-
CUDAのcudaMalloc()のパラメータを理解する方法
-
cudaMallocとcudaMallocPitchの秘密を教えます。
-
MatlabからCUDAへの呼び出しの概要(Windows, Ubuntu)
-
CUDA プログラミングのエラー処理
-
[解決済み] CUDAバージョンの取得方法を教えてください。
-
CUDA (V) deviceQueryを使ったGPUのプロパティ
-
[解決済み】DockerコンテナからGPUを使用する?
-
[解決済み] グローバル機能とデバイス機能の違い
-
[解決済み] NVIDIAとAMDの比較:GPGPUパフォーマンス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
CUDAドライバのバージョンが、CUDAランタイムのバージョンに対して不足している問題
-
CUDAのcudaMalloc()のパラメータを理解する方法
-
MatlabからCUDAへの呼び出しの概要(Windows, Ubuntu)
-
CUDA プログラミングのエラー処理
-
[解決済み] CUDAバージョンの取得方法を教えてください。
-
[解決済み】DockerコンテナからGPUを使用する?
-
[解決済み] nvccとNVIDIA-smiが示す異なるCUDAのバージョン
-
[解決済み] CUDAのグリッド寸法、ブロック寸法、スレッド構成を理解する(簡単な説明)【終了しました。
-
[解決済み] グローバル機能とデバイス機能の違い
-
[解決済み] ストリーミングマルチプロセッサ、ブロックとスレッド(CUDA)