GPUとカーネル最適化、その基礎を徹底解説
A primer on GPUs and kernel optimization

大規模言語モデルの強化学習向けフレームワーク「Jam」を約10か月かけて自作した著者が、その過程で得たGPUの基礎知識を解説する。fp32からFP8までの浮動小数点形式、スレッド・ブロック・ワープ・SMの関係、HBMやレジスタ、共有メモリ、キャッシュ、オキュパンシーといった概念を整理し、実際のカーネル最適化の勘所とLLMを使った開発ワークフローへとつなげる。
皮肉なことに、これはチップ上で最も遅いメモリだ。
HNでの議論
11- augment_me
カーネルのベンチマーク/評価について一言も触れていないのはおかしい。
個人的には、高性能なGPUカーネルがすべて生成されたり山登り法でチューニングされたりしている今、ここが我々が見ている最大の誤差源だと思っている。
実運用ではカーネルはホットキャッシュで走らせるべきか、それともコールドキャッシュか?カーネルはリファレンスとビット単位で等価であるべきか?リファレンスに対してどの程度の誤差マージンを持つべきか?熱ノイズを避けるためにカーネルを何回実行しているか?現在のハードウェアに過剰適合するのを避けるため、別々のGPUで実行しているか?起動オーバーヘッドを削減するためにカーネルをcudagraphでコンパイルできるか?熱によるバイアスを避けるために、カーネル実行とリファレンス実行をA/B B/Aで交互に配置しているか?
- saagarjha
> この作業の大半で使われているH200では、GPUのメインメモリはHBM、すなわちhigh-bandwidth memoryだ。皮肉なことに、これはチップ上で最も遅いメモリである。
細かい指摘だが、HBMは共有メモリやレジスタとは違い、チップの外にある
- brcmthrowaway
誰かこれについて本を書く必要がある