プロセスに使用されているGPUコアの数を決定する方法は?


4

ご存知のように、CPUに4つのコアがある場合、最大使用率は400%になり、合計使用率が200%の場合、4つのコアのうち2つのコアが使い果たされたと分析されます。

したがって、GPUの場合、最大使用率は100%であり、合計使用率が80%の場合、使用されているコアの数をどのように分析しますか?

nvidiaグラフィックの場合、nvidia-smiを使用してnvidia GPUの使用率を確認できます。

Intelグラフィックの場合、intel_gpu_time / intel-gpu-topを使用してiGPUの使用率を確認できます。

しかし、どちらも利用されているGPUコアの数を示していません。それを行う方法はありますか?

Linuxを使用しています。Ubuntu 14.04とCentos 7.2の両方


gpu-utlizationはわかりにくい用語です。の場合nvidia-smi、1つ以上のマルチプロセッサが使用されている合計時間の割合を示します。使用中の全コアの割合を意味するものではありません。
debonair

回答:


3

GPUでは、100%の使用率は、すべてのコアが基本的に命令を実行していることを意味します。これらのすべての命令がFused-Multiply-Add操作a = a + b * cである場合、最高のパフォーマンスで実行されます:、ほとんどの現在のGPUは単一の命令のみを使用して実行できます。

GPUで計算を実行するプログラムを作成するとき(CUDAまたはOpenCLを使用)、いわゆるスレッドブロックのグリッド(CUDA用語)で作業を分散します。すべてのGPUコアをビジー状態に保つために、これらすべてのスレッドをスケジュール(32スレッドの「ワープ」)するのはGPU次第です。このテーマにあなたがどれだけ精通しているかはわかりませんが、この紹介は興味深い読み物かもしれません。

例は、これが使用率にどのように関係するかを説明しています。GPUがアイドル状態で、1つのスレッドブロックに対してのみカーネルを起動するアプリケーションを起動するとします。ただし、このブロック内で十分な計算が行われます。GPUは、GPU上のストリーミングマルチプロセッサ(SM = 128コアのグループ)上にスレッドブロックをスケジュールします。たとえば、SMが20個あるNvidia GTX 1080の場合、使用率は(1/20 * 100%)= 5%になります。

GPUコンピューティングのこの基本的な知識があれば、Nvidia Visual Profiler(CUDAアプリケーションの場合)またはCodeXL for(OpenCLアプリケーション)を介して実行し、アプリケーションがGPUの使用について推論するために使用するカーネルのスレッド構成を確認できます。しかし、それだけではありません。このツールは、GPUが実行している操作の種類(および効率)を正確に確認するために非常に貴重です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.