PTX

定義:

PTX[Parallel Thread Execution]とは,GPUアーキテクチャに依存しない,NVIDIA が提供する仮想GPUアセンブリ言語[中間表現,IR,Intermediate Representation]である.

PTXは,CUDAコンパイラ[nvcc]によって生成され,実際にGPU上で実行される前にJIT[Just-In-Time]コンパイルによって最終的なGPUの機械語であるSASS[Streaming Assembly]に変換される.

PTXはCPUにおけるLLVM IRのような役割を担い,特定のGPUアーキテクチャ[Ampere, Hopper, Ada Lovelace]に依存しない仮想命令セットである.

NVIDIAのCUDA Toolkitには,PTXを扱うためのコンパイラデバッガが含まれている.

例えば,CUDA C/C++ からPTXを生成する場合,以下のように nvcc を用いる.

nvcc -ptx my_kernel.cu -o my_kernel.ptx

中国のDeepSeekはNvidiaの高性能品が輸出規制を受ける中で,Nvidiaが中国向けに性能を落としたH800を2,048個の性能を最大限に引き出すために,PTXを用いて132基あるストリーミングマルチプロセッサー[SM]のうち20基を通信やデータ圧縮専用に割当て,GPU間転送の高速化やワープ単位のスケジューリングや圧縮アルゴリズムといったチューニング実施を実施し,Mixture of Experts方式の大規模モデルのボトルネックを解消したとされている.OpenAIのo1[2024-09公開.Strawberry]と同等性能を有しながら開発費約560万ドルのDeepSeek-R1[2025-01-20公開]の開発の背景にはPTXがあったのである.

PTX関連ツール

ツール役割
nvccCUDAコード[.cu]をPTX[.ptx]にコンパイルする.
ptxasPTX[.ptx]をSASS[GPUの機械語]にアセンブルする.
cuobjdumpPTX/SASSコードの逆アセンブルを行う.
cuda-gdbCUDAデバッガ.PTXコードのデバッグもできる.

Mathematics is the language with which God has written the universe.





















SIMH メモリのバンド幅 OSI参照モデル 仮想化 chroot イーサネット