GPUロードを記録する方法は? [コピー]

GPUロードを記録する方法は? [コピー]

GPU負荷を記録する方法を知りたいです。 CUDAでNvidiaグラフィックスカードを使用してください。

繰り返さないでください。録音したいです。

答え1

使用

nvidia-smi dmon -i 0 -s mu -d 5 -o TD

その後、ログファイルに簡単にダンプできます。 5秒ごとにサンプリングされたデバイス0のGPU使用量。

 #Date       Time        gpu    fb  bar1    sm   mem   enc   dec   pwr  temp
#YYYYMMDD   HH:MM:SS    Idx    MB    MB     %     %     %     %     W     C
 20170212   14:23:15      0   144     4     0     0     0     0    62    36
 20170212   14:23:20      0   144     4     0     0     0     0    62    36
 20170212   14:23:25      0   144     4     0     0     0     0    62    36

フラグの詳細については、マニュアルページを参照してください。

マルチGPU環境の場合、-i 0上記のコマンドで削除すると、すべてのGPUをログに記録できます。

答え2

以下を使用できます(テスト済みnvidia-smi 352.63)。

while true; 
do nvidia-smi --query-gpu=utilization.gpu --format=csv >> gpu_utillization.log; sleep 1; 
done. 

出力は次のとおりです(3つのGPUがマシンに接続されている場合)。

utilization.gpu [%]
96 %
97 %
92 %
utilization.gpu [%]
97 %
98 %
93 %
utilization.gpu [%]
87 %
96 %
89 %
utilization.gpu [%]
93 %
91 %
93 %
utilization.gpu [%]
95 %
95 %
93 %

理論的に、単に使用できますが、nvidia-smi --query-gpu=utilization.gpu --format=csv --loop=1 --filename=gpu_utillization.csv私には動作しないようです。 (指定されたファイルのフラグまたは-fログ--filename出力)

追加情報を記録するには:

while true; 
do nvidia-smi --query-gpu=utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv >> gpu_utillization.log; sleep 1; 
done

出力:

utilization.gpu [%], utilization.memory [%], memory.total [MiB], memory.free [MiB], memory.used [MiB]
98 %, 15 %, 12287 MiB, 10840 MiB, 1447 MiB
98 %, 16 %, 12287 MiB, 10872 MiB, 1415 MiB
92 %, 5 %, 12287 MiB, 11919 MiB, 368 MiB
utilization.gpu [%], utilization.memory [%], memory.total [MiB], memory.free [MiB], memory.used [MiB]
90 %, 2 %, 12287 MiB, 11502 MiB, 785 MiB
92 %, 4 %, 12287 MiB, 11180 MiB, 1107 MiB
92 %, 6 %, 12287 MiB, 11919 MiB, 368 MiB
utilization.gpu [%], utilization.memory [%], memory.total [MiB], memory.free [MiB], memory.used [MiB]
97 %, 15 %, 12287 MiB, 11705 MiB, 582 MiB
94 %, 7 %, 12287 MiB, 11540 MiB, 747 MiB
93 %, 5 %, 12287 MiB, 11920 MiB, 367 MiB

答え3

すべてがそこにあります。注意深く読みませんでした:) iostatやvmstatのようなオプションの遅延と反復を使用する次のPythonスクリプトを使用してください.

https://gist.github.com/matpalm/9c0c7c6a6f3681a0d39d

NVIDIA設定を使用することもできます。

nvidia-settings -q GPUUtilization -q 専用 GPU メモリの使用

...その後、単純なbashループを使用するか、cronジョブを設定するか、watchを使用して終了します。

watch -n0.1 "nvidia-settings -q GPUUtilization -q 専用 GPU メモリの使用"'

関連情報