
2026/05/23 21:11
GPU マルチプライ演算が「予測可能な」データを与えると高速化されることが判明(2024 年)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
2022 年のベンチマークテストによる重要な発見は、GPU の性能指標が誤解を招きやすいことである。実世界での結果は、ハードウェアの raw スピードではなく、電力制限によって決定されるためだ。具体的には、CUDA ライブラリを比較したベンチマークにおいて、CUTLASS はデフォルトの整数初期化によるゼロ埋め行列が原因で約 10% の高いスループット(288 テラフロップス対 CuBLAS の 258)を示したが、CUTLASS を Python にバインドするか、ランダムな入力(
randn)を即座に採用すると、性能は基準値(約 257 テラフロップス)と一致して低下し、データ分布が主要な変数であることを確認した。この現象の背後にある物理法則は、トランジスタが重要な「スイッチング」エネルギーを消費することだ。ゼロなど予測可能なパターンはトランジスタの反転を減少させ、電力消費を下げて GPU が約 400W の制限内でサーマルスロットリングを回避できる。対照的に、予測不能なランダム入力は急速なスロットリングを引き起こし、GPU をピーク FLOPS 仕様より искусственно低く保ち続けている。このダイナミクスは、なぜマーケティングの数字(例:H100 の 989 TFLOPS)が理論上の最大値であり、標準的な負荷下では稀に達成されるのかを説明している。Nvidia の MLPerf サブミッションからの証拠もこれをさらに検証し、L2 キャッシュからストリーミングマルチプロセッサへの電力再配分がエンドツーエンドの性能向上をもたらしたことを示した。今後の展望としては、B100 は H100 と同じエネルギー予算で 1.75 倍の理論的 FLOPS 増加を約束しているものの、業界の評価はトランジスタ数から現実的で予測不能なデータ負荷下での実際の性能への焦点を移す必要がある。不正確な評価を避けるためだ。本文
テンソルコアのパフォーマンスと電力制約の驚くべき事実:CUTLASS ベンチマーク調査
1. プロジェクトの背景とベンチマーク結果
2022 年、高速度行列積を特徴とする新しいプロジェクト「CUTLASS」について検証を行いました。 まず、PyTorch を使用して
mm_bench.py で CuBLAS の標準的な呼び出しを行い、8192 × 8192 × 8192 の大規模行列積に対して以下の結果を得ました。
- CuBLAS: 258 トラスフロップ(フラップ利用効率 83%)
次に、CUTLASS のパフォーマンスをチェックするため、同社製のプロファイラを実行しました。
./cutlass_profiler --operation=Gemm --m=8192 --n=8192 --k=8192
- CUTLASS: 288 トラスフロップ(約 10% のパフォーマンス向上)
CuBLAS は大規模計算に対し最適化されていますが、自動チューニングを組み合わせた CUTLASS がそれよりもさらに上回る結果を示しました。これは驚異的な性能向上です。
2. Python でのバインドとデータ分布の影響
CUTLASS の核関数を Python にバインドし、CuBLAS と比較するスクリプトを実行した際の結果は以下の通りでした。
- CuBLAS: 258 トラスフロップ
- CUTLASS: 257 トラスフロップ
Python 環境下ではパフォーマンス向上が消失しました。ベンチマーク設定の一貫性を確保するのは notoriously(極めて困難)な課題ですが、それでもこの差は明確でした。
詳細な調査の結果、CUTLASS のプロファイラがデフォルトで入力データを「整数のみ」で初期化していたことが問題の所在であることに気づきました。入力をどのように設定するかが性能に与える影響を実験しました。
zero_inputs = torch.zeros(N, N) randn_inputs = torch.randn(N, N) benchmark(zero_inputs) # 295 トラスフロップ benchmark(randn_inputs) # 257 トラスフロップ
通常、行列積の計算時間や性能は「行列の中身」とは無関係に決まると考えられています。しかし、以下の条件を満たす場合でも結果が異なるという事実は、直感的ではありませんでした:
- 同じ数の計算を実行
- 同じ順序で同じ計算を実行
- 同じメモリアドレスをアクセス
- 同じ順序でメモリアドレスをアクセスする
「行列内の値が行列積のパフォーマンスに影響を与える」という要素は、GPU ハードウェアのモデルには存在しませんでしたが、これが事実であることに気づきました。その正体は、半導体におけるダイナミック/スイッチング電力でした。
3. 電力消費とパフォーマンスの関係性
Nvidia の A100 GPU は理論上 400W の電力制限を持ちますが、実際に消費する電力はクロック周波数やトランジスタの動作状況によります。
電力制限とスロットリング
- アイドル状態時:
で約 88Wnvidia-smi - 負荷下時:通常、電力制限付近まで達し、ピーク出力を出す
- 制限超過時:VRM(電圧調整モジュール)が電圧を下げてクロック周波数を抑制し、性能を制限(スロットリング)する
電力消費の仕組みは以下の 2 つに分けられます:
| タイプ | 説明 |
|---|---|
| 静的/リーク電力 | 電源供給されたシリコン量に比例。本質的にアイドル時の電力(例:88W)。回路を通る損失分。 |
| ダイナミック/スイッチング電力 | トランジスタの状態が切り替わるたびに消費。トランジスタ反転回数が多いほど電力が増加。 |
データ分布による性能差の正体
ゼロ行列(予測可能な入力)は、チップ内のトランジスタ反転回数を抑え、電力制限内での動作を可能にするため高速です。逆に、正規分布のようなランダムな値を含む入力は、多数のトランジスタを高頻度で切り替えさせ、消費電力を増やし、結果としてスロットリングにより性能が低下します。
各種データ分布でのベンチマーク
| データ分布 | 特徴 | パフォーマンス傾向 |
|---|---|---|
| Zeros | 全ての値が 0 | 最速(累積器もゼロ、反転なし) |
| Ones | 全ての値が 1 | 非常に高速(同一値の生成、変化なし) |
| Rand | 一様分布 | 正規分布よりわずかに速い |
| Randn | 正規分布 | 最も遅い(ランダム性が高くトランジスタ切り替え多数) |
| Checkerboard | チェス盤模様に 0 を配置 | 若干の最適化効果 |
| Sparse | ランダム要素の 75% をマスク | スパース性は非効率ではないという意外な事実 |
| Ternary | 値が 1, -1, 0 のみ | - |
| One Bit | 4 番目のビットのみセット | - |
| All Pies | 全ての値が π | - |
| Twos | 全ての値が 2 | - |
4. パラメータ調整による検証実験
電力制限(Power Cap)の影響
使用電力は
クロック速度 × トランジスタ反転数 に比例します。電力制限を下げると、以下の現象が発生します。
- 予測可能な入力(ゼロ): 効果が大きく増幅される
- 予測不可能な入力(randn): そのままの性能を維持できる(相対的に悪化)
- 極限の場合(100W など): 傾向が逆転する可能性がある(電力不足によるボトルネック)
クロック速度の影響
電力制限を固定し、GPU のクロック速度上限を変更すると以下の結果が得られました。
- 高クロック時: 予測可能な入力も依然としてスロットリングされているため、差は小さい
- 中クロック時: 予測可能な入力は影響を受けますが、予測不可能な入力は変わらず、ギャップが縮小
- 低クロック時: 両者の性能が完全に一致(電力スロットリングが発生せず、手動設定のクロック制限に達する)
5. 実用上の意味と H100 の性能について
Nvidia が公表している FLOPS の計算式は以下の通りです:
$$ \text{FLOPS} = \text{テンソルコア数} \cdot \text{最大クロック速度} \cdot \text{命令あたりの FLOP 数} $$
例として H100:
- テンソルコア数:528 個
- 最大クロック:1.830 GHz
- FLOP/指令:1024
- 理論値:989 トラスフロップ
しかし、これは「十分な電力」で動作している前提です。 実際の環境では、特に H100 の場合、以下のことが問題となります。
- 電力制約: 最大持続可能クロックは理論値よりも著しく低い。
- ボトルネック: 行列積は計算量や帯域幅ではなく、電力によって制限されている。
- 実測性能: H100 は A100 の 3 倍の理論 FLOPS を持つが、スロットリングの影響により「実際の」パフォーマンスは約 2 倍しか伸びない。
- 効率性: 「ワットあたりのフロップ数」も低下する傾向がある。
MLPerf の提出結果から、L2 キャッシュから SM への電力割り当てによってエンドツーエンドのパフォーマンスが改善された事例も確認されており、仮説が概ね支持されました。今後の B100(H100 と同等の電力だが理論値 1.75 倍の FLOPS)における実測性能向上にも注目が集まります。
注意: CUTLASS プロファイラでの FLOPS 数を確認する際は、他のベンチマークと比較できるように
パラメータを適切に設定してください。scale