GPUを使用するプロセスを見つける

GPUを使用するプロセスを見つける

私は主に科学計算に GPU を使用しています。最近、科学計算を中断しているときでも、使用率/温度が依然として高いことに気づきました。何かが私の GPU を使用しているのではないかと強く疑っています (もちろん、OS 以外)。

しかし、どのアプリが CPU を使用しているかを知るにはどうすればよいでしょうか?

関係があるかどうかはわかりませんが、私は Windows XP で NVidia GT240 を使用しています。

答え1

GPGPU の登場とその使いやすさにより、ほとんどのブラウザを含む多くの最新プログラムが GPGPU を使用するようになるでしょう。

プロセスエクスプローラーSysInternalsのGPU使用率統計をさまざまなプロセスごとに追跡できる便利なツールです。

GPU Usage
GPU Committed Bytes
GPU System Byes
GPU Dedicated Bytes

これは、GPU を消費している不正な(実際にはそうではない)プロセスを探し始めるのに適した場所です。

GPU 統計は、Process Explorer -> 列の選択で有効にする必要があります。

プロセスエクスプローラーのGPU設定

注記:これは、次の理由により、Windows Vista以降でのみ動作します。

Microsoft は、Windows Vista 以降でグラフィックス ドライバー モデルを再設計し、複数のグラフィックス アプリケーションの同時実行をより適切にサポートできるようにしました。このモデルを理解することは、Windows でのグラフィックス パフォーマンスを理解する上で重要です。まず、OS は各プロセス内の各 D3D デバイスを独自のグラフィックス コンテキストに関連付けます。コンテキストに送信された各 API 呼び出しは、そのコンテキストのコマンド リストにバッチ処理されます。十分なコマンドが蓄積されるか、何らかの理由で API が現在のコマンド バッファーをフラッシュする必要があると判断した場合、D3D API はコマンド バッファーをグラフィックス カーネルにディスパッチします。これらのコマンド バッファーはすぐには処理されず、代わりに各コンテキストのキューに格納されます。グラフィックス カードには、作業中のタスクのキューがあります。定期的に、余裕がある場合、グラフィックス スケジューラが起動し、コンテキスト固有のコマンド キューに作業があるコンテキストの 1 つからタスクをグラフィックス カードの作業キューに追加します。CPU スケジューラと同様に、過度のリソース スラッシングを回避しながら、できるだけ公平な方法でこれを実行しようとします。GPUView を使用すると、コンテキスト固有のすべての GPU キューとグラフィックス カードのキューの状態を時間の関数として表示できます。グラフィック カードは常にキューの先頭にあるオブジェクトを処理します (キューが空の場合はアイドル状態になります)。GPUView はこのドライバー モデル用に明示的に設計されており、Windows XP では実行されないことに注意してください。

関連情報