問題タブ [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.
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が異なるためです。誰もこれについて何か言うことができますか? または、いくつかのことを明確にするかもしれません。ありがとう
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 操作は表示されません。
私のコードは半精度浮動小数点数で動作するため、ルーフライン チャートが私のコードには適用されないのではないかと思います。