注目★★★★★Hacker News
CUDA カーネル実行の全貌―コンパイルから GPU 実行まで
30秒で把握
- 1CUDA コンパイル (nvcc) がホスト C++ と GPU カーネルを分離・PTX→SASS 変換・fatbin 埋め込みまで一括処理
- 2PTX は仮想 ISA・無限レジスタ・デバイス非依存・SASS は実マシン語・定数メモリ・16 レジスタに最適化・GPU 依存
- 3fatbin に SASS と PTX を同梱・旧 GPU は PTX を JIT コンパイル・ベクトル加算の例で命令融合・メモリアドレス計算を可視化
要約
CUDA カーネルの実行が CPU・GPU の間でどのように処理されるかを詳細に解説した技術記事。nvcc コンパイラがホストコードとデバイスコードを分離し、PTX (仮想 ISA) を経由して SASS (実マシン語) に変換される過程を示す。PTX は汎用設計で無限の仮想レジスタを持つが、ptxas により RTX 4090 向けの実 SASS では 16 レジスタに最適化される。最終的にホスト実行ファイルに埋め込まれた fatbin には SASS と互換性用 PTX が両方含まれ、異なる GPU でも JIT コンパイルで対応可能になる。ベクトル加算カーネルの例を通じ、仮想アドレス変換・定数メモリ放送・メモリ命令の融合など GPU 最適化の実装が可視化される。
あなたへの影響
GPU コンパイルパイプラインと最適化の仕組みを理解することで、CUDA カーネルのパフォーマンス測定・チューニング時に何が起きているかが明確になります。
推奨:逆アセンブリ (cuobjdump) やプロファイリング結果の読み取りが正確になり、ホットパスの改善判断の精度が向上します。