ubuntu で CUDA nsight プロファイラーを使用して、GPU で高速化されたアプリケーションのメモリ帯域幅使用率とコンピューティング スループット使用率の 2 つの全体的な測定値を確立しようとしています。アプリケーションは、Tesla K20c GPU で実行されます。
私が必要とする 2 つの測定値は、このグラフに示されている測定値にある程度匹敵します。
問題は、ここに正確な数値が示されていないことと、さらに重要なことに、これらのパーセンテージがどのように計算されているかがわからないことです.
メモリ帯域幅使用率
プロファイラーは、GPU の最大グローバル メモリ帯域幅が 208 GB/s であることを示しています。
これは、デバイス メモリ帯域幅またはグローバル メモリ帯域幅を指しますか? グローバルと書かれていますが、最初のものの方が私には理にかなっています。
私のカーネルでは、プロファイラーはデバイスのメモリ帯域幅が 98.069 GB/s であることを教えてくれます。
最大 208 GB/秒がデバイス メモリを参照すると仮定すると、単純にメモリ帯域幅使用率を 90.069/208 = 43% として計算できますか? このカーネルは、追加の CPU-GPU データ転送なしで複数回実行されることに注意してください。したがって、システム BW は重要ではありません。
コンピューティング スループット使用率
コンピューティング スループット使用率を数値化する最善の方法が何であるかは正確にはわかりません。私の最善の推測は、サイクルあたりの命令数を使用して、サイクルあたりの命令数を最大にすることです。プロファイラーは、最大 IPC が 7 であることを教えてくれます (上の図を参照)。
まず、それは実際にはどういう意味ですか?各マルチプロセッサには 192 個のコアがあるため、最大 6 つのアクティブなワープがあります。最大 IPC を 6 にする必要があるということでしょうか?
プロファイラーは、カーネルが IPC = 1.144 を発行し、IPC = 0.907 を実行したことを示しています。コンピューティング使用率を 1.144/7 = 16% または 0.907/7 = 13% として計算する必要がありますか? またはこれらのいずれでもないのですか?
これら 2 つの測定値 (メモリとコンピューティングの使用率) は、カーネルがリソースをどれだけ効率的に使用しているかについて適切な第一印象を与えていますか? それとも、他に含めるべき重要な指標はありますか?
追加グラフ