問題タブ [roofline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2774 参照

c++ - ルーフライン モデル: 運用強度の計算

このようなおもちゃのループがあるとします

そして、私のキャッシュ ラインは64 バイト(つまり、十分な大きさ) であると想定しています。次に、(フレームごとに) 基本的に RAM への 2 回のアクセスと 3 つの FLOP を行います。

  • 1 (キャッシュ) 読み取りアクセス: 3 つすべてをロードx[i-1], x[i], x[i+1]
  • 1書き込みアクセス:保存y[i]
  • 3 フロップ (1 マルチ、1 アッド、1 サブ)

運用強度はエルゴ

OI = 3 フロップ/(2 * 4 バイト)

今、私がこのようなことをしたらどうなりますか

もうありませんのでご注意くださいy。単一の RAM アクセスがあるということですか。

  • 1 (キャッシュ) 読み取り/書き込み: 読み込みx[i-1], x[i], x[i+1]、保存x[i]

またはまだ 2 つの RAM アクセス

  • 1 (キャッシュ) 読み取り: 読み込み中 x[i-1], x[i], x[i+1]
  • 1 (キャッシュ) 書き込み: 保存x[i]

どちらの場合も、運用強度のOIが異なるためです。誰もこれについて何か言うことができますか? または、いくつかのことを明確にするかもしれません。ありがとう

0 投票する
1 に答える
177 参照

cuda - NSIGHT コンピューティング: SOL SM とルーフライン

cuda カーネルでcuda-11.2 nsight-computeを実行しました。

SOL SM は 79.44% であると報告されており、私はこれを最大値にかなり近いと解釈しています。SOL L1 は 48.38%

ルーフラインチャートを調べると、測定結果がピーク パフォーマンスから大きく離れていることがわかります。

達成: 4.7 GFlop/s.

ルーフラインでのピーク: 93 GFlop/s 程度。

また、ALU パイプの使用率が 80% 以上であることもわかります

では、ALU パイプが十分に活用されている場合、ルーフライン チャートによると、達成されたパフォーマンスがこれほど低いのはなぜでしょうか?

プロファイル結果

これは RTX 3070 上にあり、17.6 TFlop/s の単精度でピークに達することに注意してください。 ピーク

アップデート

ここで何が起こっているのか理解できたと思います... @robert-crovellaは、ALUが整数演算であるため、含まれていないことを示す正しい軌道に乗せました。そして、それらは含まれていない唯一の操作ではありません!

ルーフライン チャートには、fp32 および fp64 操作のみが表示され、fp16 操作は表示されません。

私のコードは半精度浮動小数点数で動作するため、ルーフライン チャートが私のコードには適用されないのではないかと思います。