STREAM のメモリ帯域幅の結果だけでは、ベンチマークの MFLOPS/GFLOPS の見積もりを取得することはできません。さらに 2 つのパラメーターを知る必要があります。CPU コアのピーク MFLOPS/GFLOPS (ベクトル命令のすべてのバリアントと CPU 周波数制限: 最小、平均、最大を使用したクロック サイクルあたりの最大 FLOP 操作として優れています) および GFLOPS/GBytes (フロップからフロップまで)推定する必要があるすべてのプログラム (すべての NAS ベンチマーク) のバイト比、演算強度)。
ストリーム ベンチマークの演算強度は非常に低いです (2 つの倍精度オペランドあたり 0 DP=FP64 フロップ = コピーでは 2*8 バイト、スケールでは 16 バイトあたり 1 フロップ、加算では 1 フロップ / 24 バイト、トライアドでは 2 フロップ / 24 バイト)。 . そのため、Stream ベンチマークは、正しい実行ではメモリ帯域幅によって制限されます (および での不適切な実行ではキャッシュ帯域幅によって制限されます)。多くのベンチマークはより高い可能性があります
このデータ (メモリ帯域幅、さまざまなベクトル化レベルでの最大 gflops/GHz、CPU の通常/最大/低周波数、テストの算術強度) を使用して、ルーフライン パフォーマンス モデルhttps://crd.lbl.gov/departmentsの使用を開始できます。 /computer-science/PAR/research/roofline/

ルーフラインを使用すると、フロップ/バイトの x 軸があります。GFlop/s の y 軸 (両方とも対数スケール)。「屋根」のラインは、CPU (またはマシン) ごとに 2 つの部分で構成されます。
最初の部分は傾斜しており、算術強度が低い方に対応しています。この部分のアプリケーションは、データがメモリからロードされるのを待つ必要があります。フル GFlop/s の CPU 速度で操作するデータはありません。テストはメモリによって制限されます。この行は、STREAM ベンチマークによって定義されます。
ラインの 2 番目の部分は直線で、より高い強度に対応します。ここでのタスクは、メモリ帯域幅によって制限されるのではなく、利用可能な FLOPS によって制限されます。また、最新の CPU では、すべてのフロップはワイド ベクトル命令 (命令レベルの並列処理) でのみ使用でき、すべてのタスクが最も広いベクトルを使用できるわけではありません。
