の定義によると、flop_sp_efficiency
ピーク時の単精度浮動小数点演算の達成率
CUDA マニュアルは FLOPS をカバーしています。メトリクスは歩留まり率 (例: 10%)。このことから、「ピーク」という用語について 2 つの疑問が生じます。
1-それはハードウェア固有の値ですか? したがって、nvprof は比率を計算するために、特定のデバイスで実行されるすべてのアプリケーションに対して分母が一定である必要があることに注意する必要があります。マニュアルによると、それはNo_CUDA_cores * Graphic_clock_freq * 2
. それが nvprof が分母を設定する方法ですか?
2- これは、カーネルごとのプログラムの実行中にピーク値が達成されるということですか? カーネルが 10 回呼び出されるとします。1 回の呼び出しで最大の FLOPS が得られます (ハードウェア値とは関係ありません)、たとえば 2GFLOPS です。次に、効率が計算されsum(FLOPS_i)/10
、10 回の呼び出しの平均 FLOPS が得られます。次に、この平均を 2 で割ると、そのカーネルの FLOPS 効率が得られます。この仮定では、カーネルが 2 GFLOPS に達する可能性があり、別のカーネルが 4 GFLOPS に達する可能性があります。これは、nvprof でカーネルごとにメトリックが報告されるためです。
それについて何かコメントはありますか?