title: 什么是流式汇编器? abbreviation: SASS


流式汇编器 (SASS) 是运行在 NVIDIA GPU 上的程序的汇编格式。这是可编写人类可读代码的最低层级格式。它是 nvccNVIDIA CUDA 编译器驱动程序)输出的格式之一,与 PTX 并列。它在执行期间被转换为特定设备的二进制微码。推测"流式汇编器"中的"流式"指的是该汇编语言程序所面向的流式多处理器 (SM)。

SASS 是版本化的,并且与特定的 NVIDIA GPU SM 架构绑定。另请参阅计算能力

以下是适用于 Hopper GPU 的 SM90a 架构的 SASS 示例指令:

与 CPU 相比,手动编写这种"GPU 汇编器"更为罕见。在性能分析和编辑高级 CUDA C/C++ 代码或内联 PTX 时查看编译器生成的 SASS 更为常见,尤其是在生产最高性能的内核时。Godbolt 支持同时查看 CUDA C/C++、SASS 和 PTX。有关 SASS 的更多细节(重点关注性能调试工作流),请参阅 Arun Demeure 的这个演讲

SASS 的文档记录非常少——指令列在 NVIDIA CUDA 二进制工具文档 中,但未定义其语义。从 ASCII 汇编器到二进制操作码和操作数的映射完全没有文档记录,但在某些情况下已被逆向工程(MaxwellLovelace)。