Apple Neural Engineのバグを回避し、DRAM帯域を50GB/s取り戻す
Getting 50 GB/S Back from the Apple Neural Engine

Apple M3のNeural Engineに潜むRTL性能エラッタにより、重みサイズが1MiBの整数倍のときDRAMストリーミング帯域が公称45〜60GB/sから17〜19GB/sに激減する問題が発見された。原因はカーネルDMAエンジンの投機的プリフェッチリングが1MiB境界で整数ラップアラウンドを起こすこと。この経路を回避した結果、Llama 3.2 1Bのトークン生成速度は10.0から24.3トークン/秒へ、Qwen3-8Bは1.36から2.97トークン/秒へと向上した。
D=2048ではスループットが16.93 GB/sだった。D=2016では44.5 GB/s、つまり27.57 GB/sの低下(61.96%減)である。
HNでの議論
33- bee_rider
素晴らしい調査だ。
1MiBのようなきれいな丸い数字が「性能が悪い」構成になるのはいつも驚かされる(まあ、よくあることだが)。
この文脈で erratum という言葉が適切だと確信している? 通常は、文書に誤りがあることを知らせる通知を指すのに使われるのを見るけど。
- thenewwazoo
「どうやらメモリコントローラのスループットは、テンソル次元空間において波長2048の支配的な高調波を持っているらしい。」
これには笑ってしまった。
- anemll
すべてのシステムが影響を受けるわけではない
M1とM5MAXは問題ない
- Neywiny
ここで確認したいんだけど、このSystemVerilogは君が考えていることを仮説的に述べたもの? それとも実際のRTLのソースを持っているの?
- londons_explore
Appleの中の誰かが、テープアウト前にいくつかの一般的なニューラルネットアーキテクチャをRTLシミュレータで走らせて、性能が期待に沿うか確認したりしなかったのかな??