web-dev-qa-db-ja.com

CUDAを使用するGPUのトップコマンド

CudaとMPIを使用するプロセスを監視しようとしていますが、これを行う方法はありますか?コマンド「top」のようなものですが、GPUも監視しますか?

86
natorro

gpustat は非常に便利だと思います。 Inはpip install gpustatでインストールでき、プロセスまたはユーザーによる使用の内訳を出力します。

enter image description here

47
Alleo

使用済みリソースに関するリアルタイムの洞察を得るには、次を実行します。

nvidia-smi -l 1

これは、毎秒ループしてビューを呼び出します。

コンソール履歴にループコールの過去のトレースを保持したくない場合は、次のこともできます。

watch -n0.1 nvidia-smi

ここで、0.1は秒単位の時間間隔です。

enter image description here

98

この情報を組み合わせるものは何も知りませんが、nvidia-smiツールを使用して生データを取得することができます(-lのヒントについては@jmsuに感謝)。

$ nvidia-smi -q -g 0 -d UTILIZATION -l

==============NVSMI LOG==============

Timestamp                       : Tue Nov 22 11:50:05 2011

Driver Version                  : 275.19

Attached GPUs                   : 2

GPU 0:1:0
    Utilization
        Gpu                     : 0 %
        Memory                  : 0 %
78
Edric

here から最新の安定したCUDAドライバー(4.2)をダウンロードしてインストールします。 Linuxでは、nVidia-smi 295.41で必要なものが提供されます。 nvidia-smiを使用:

[root@localhost release]# nvidia-smi 
Wed Sep 26 23:16:16 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 3.295.41   Driver Version: 295.41         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  Tesla C2050               | 0000:05:00.0  On     |         0          0 |
|  30%   62 C  P0    N/A /  N/A |   3%   70MB / 2687MB |   44%     Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.  7336     ./align                                                 61MB  |
+-----------------------------------------------------------------------------+

編集:最新のNVIDIAドライバーでは、このサポートはTeslaカードに限定されています。

19
lashgar

引数「--query-compute-apps =」を使用します

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv

さらにサポートが必要な場合は、フォローしてください

nvidia-smi --help-query-compute-app
16
Deepak

もう1つの便利な監視アプローチは、GPUを消費するプロセスでpsフィルター処理を使用することです。私はこれをよく使います:

ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`

Nvidia GPUを使用するすべてのプロセスと、それらに関するいくつかの統計が表示されます。 lsof ...は、現在のユーザーが所有するnvidia GPUを使用してすべてのプロセスのリストを取得し、ps -p ...はそれらのプロセスのps結果を表示します。 ps fは、子/親プロセスの関係/階層のニース形式を示し、-oはカスタム形式を指定します。これはps uを実行するのと似ていますが、プロセスグループIDを追加し、他のフィールドをいくつか削除します。

nvidia-smiに対するこの利点の1つは、GPUを使用するメインプロセスだけでなくプロセスフォークも表示することです。

ただし、1つの欠点は、コマンドを実行するユーザーが所有するプロセスに限定されることです。任意のユーザーが所有するすべてのプロセスに対して開くために、Sudoの前にlsofを追加します。

最後に、watchと組み合わせて、継続的な更新を取得します。したがって、最終的には次のようになります。

watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `Sudo lsof -n -w -t /dev/nvidia*`'

次のような出力があります:

Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `Sudo lsof -n -w -t /dev/nvi...  Mon Jun  6 14:03:20 2016
USER      PGRP   PID %CPU %MEM  STARTED     TIME COMMAND
grisait+ 27294 50934  0.0  0.1   Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623
grisait+ 27294 50941  0.0  0.0   Jun 02 00:00:00  \_ /opt/google/chrome/chrome --type=gpu-broker
grisait+ 53596 53596 36.6  1.1 13:47:06 00:05:57 python -u process_examples.py
grisait+ 53596 33428  6.9  0.5 14:02:09 00:00:04  \_ python -u process_examples.py
grisait+ 53596 33773  7.5  0.5 14:02:19 00:00:04  \_ python -u process_examples.py
grisait+ 53596 34174  5.0  0.5 14:02:30 00:00:02  \_ python -u process_examples.py
grisait+ 28205 28205  905  1.5 13:30:39 04:56:09 python -u train.py
grisait+ 28205 28387  5.8  0.4 13:30:49 00:01:53  \_ python -u train.py
grisait+ 28205 28388  5.3  0.4 13:30:49 00:01:45  \_ python -u train.py
grisait+ 28205 28389  4.5  0.4 13:30:49 00:01:29  \_ python -u train.py
grisait+ 28205 28390  4.5  0.4 13:30:49 00:01:28  \_ python -u train.py
grisait+ 28205 28391  4.8  0.4 13:30:49 00:01:34  \_ python -u train.py
14
grisaitis

watch nvidia-smiを使用するだけで、デフォルトでは2秒間隔でメッセージが出力されます。

たとえば、次の画像のように:

enter image description here

watch -n 5 nvidia-smi(-n 5 x 5s interval)も使用できます。

10
Jayhello

これはエレガントではないかもしれませんが、試すことができます

while true; do sleep 2; nvidia-smi; done

@Edricによる方法も試してみましたが、これは機能しますが、nvidia-smiの元のレイアウトを好みます。

3
skyuuka

nvtop を試すことができます。これは、広く使用されているhtopツールに似ていますが、NVIDIA GPU用です。以下に、実行中のnvtopのスクリーンショットを示します。

Screenshot of nvtop in action

2
Rodrigo

Nvidai-smiバイナリを活用する Prometheus GPU Metrics Exporter(PGME) があります。これを試してみてください。エクスポーターを実行したら、 http:// localhost:9101/metrics からエクスポーターにアクセスできます。 2つのGPUの場合、サンプル結果は次のようになります。

temperature_gpu{gpu="TITAN X (Pascal)[0]"} 41
utilization_gpu{gpu="TITAN X (Pascal)[0]"} 0
utilization_memory{gpu="TITAN X (Pascal)[0]"} 0
memory_total{gpu="TITAN X (Pascal)[0]"} 12189
memory_free{gpu="TITAN X (Pascal)[0]"} 12189
memory_used{gpu="TITAN X (Pascal)[0]"} 0
temperature_gpu{gpu="TITAN X (Pascal)[1]"} 78
utilization_gpu{gpu="TITAN X (Pascal)[1]"} 95
utilization_memory{gpu="TITAN X (Pascal)[1]"} 59
memory_total{gpu="TITAN X (Pascal)[1]"} 12189
memory_free{gpu="TITAN X (Pascal)[1]"} 1738
memory_used{gpu="TITAN X (Pascal)[1]"} 10451
0
Abu Shoeb

nvidia-smi pmon -i 0を使用して、計算モード、sm使用、メモリ使用、エンコーダ使用、デコーダ使用など、GPU 0のすべてのプロセスを監視できます。

0
changqi.xia

監視プログラム glancesGPU監視 プラグインとともに使用できます。

  • オープンソース
  • インストールする:Sudo apt-get install -y python-pip; Sudo pip install glances[gpu]
  • 起動するには:Sudo glances

enter image description here

また、CPU、ディスクIO、ディスク容量、ネットワーク、その他いくつかのことも監視します。

enter image description here

0

Windowsマシンで次のコードを含むバッチファイルを作成して、毎秒監視します。わたしにはできる。

:loop
cls
"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"
timeout /T 1
goto loop

コマンドを1回だけ実行する場合、nvidia-smi exeは通常「C:\ Program Files\NVIDIA Corporation」にあります。

0
Karthik N G