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