# 演算強度 ## 定義 演算強度(operational intensity)は、カーネルがメモリ系へ出すトラフィック 1 バイトあたりの演算数(Flops/Byte)である。Roofline モデルの横軸であり、カーネルの位置が屋根の斜め部(メモリ律速)か水平部(計算律速)かを決める。演算強度は、カーネルが特定の計算機で必要とする DRAM 帯域を予測する。([[@2009__CACM__Roofline - An Insightful Visual Performance Model for Multicore Architectures]]) 「総バイト数」には、キャッシュ階層で濾過された後に主記憶へ達するバイトだけを数える。プロセッサとキャッシュの間ではなく、キャッシュとメモリの間のトラフィックを測る点が、算術強度(arithmetic intensity)やマシンバランス(machine balance)との違いである。この定義により、プリフェッチやブロッキング、非アロケートストアなどのメモリ最適化が演算強度の変化として表れ、上限モデルの内側に取り込まれる。 ## 決まり方と動かし方 - 強制ミスが最小のトラフィック(したがって最大の演算強度)を決め、容量ミスと競合ミスが演算強度を下げる。配列のパディングで競合ミスを、非アロケートストアで不要なロードを減らすと、演算強度が右へ動く。 - 演算強度は問題サイズの関数でもある(密行列や FFT では、サイズとともに増える)。3D FFT では 128³ で 1.09〜1.64、512³ で 1.41 と報告されている。 - 4 種のカーネルの値: SpMV 0.17〜0.25、LBMHD 0.70〜1.07、Stencil 0.33〜0.50、3D FFT 1.09〜1.64。 - 分母をバイト以外のトラフィック(L2 キャッシュのアクセスバイト数)や、分子を浮動小数点でない演算(交換回数)に取り替えても、モデルは成り立つ。 ## 未解決の問い - キャッシュとメモリの間のトラフィックで測る定義は、GPU の多段メモリや HBM、分散メモリの通信を含むマルチノード環境で、どの層を分母に取るのが適切か。 ## 未編纂の観察 - [TPU v5e/H100 の臨界バッチサイズ] bf16 の行列積が compute-bound になる臨界バッチサイズは B_crit = (bits per param / bits per activation) × C/W_hbm で表され、TPU v5e で約 240 トークン、H100 で約 280 トークンとなる。int8 パラメータ + bf16 FLOPs なら 120 へ半減し、int8 FLOPs + int8 パラメータなら 240 に戻る(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]]) - [Transformer 推論での prefill/generation 非対称性] Prefill は演算強度が Θ(T) で成長し常に compute-bound になりやすいが、Generation は attention の演算強度が ST/(S+T) ≈ 1 に潰れ常に memory bandwidth-bound になる。この非対称性は KV キャッシュがリクエストごとに個別であるのに対しパラメータはバッチ全体で使い回せることに起因する(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]]) ## 関連 - ソース: [[@2009__CACM__Roofline - An Insightful Visual Performance Model for Multicore Architectures]] - 概念: [[Rooflineモデル]] / [[メモリバウンド]] / [[メモリウォール]] / [[疎行列ベクトル積]] / [[KVキャッシュ]] - 別ソースでの類似量: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 9 Increasing CUDA Kernel Efficiency and Arithmetic Intensity]] / [[@2024__IEEE Micro__AI and Memory Wall]] - エンティティ: [[wiki/entities/Google TPU|Google TPU]] ## 出典 - [[@2009__CACM__Roofline - An Insightful Visual Performance Model for Multicore Architectures]](演算強度の定義、算術強度・マシンバランスとの違い、3C モデルとの結び付け) - [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]](TPU v5e/H100 の臨界バッチサイズ、prefill/generation の演算強度非対称性)