3.14. 什么是寄存器?

寄存器是 内存层次结构 中与单个 线程 相关联的内存(左图)。改编自 NVIDIA 的 CUDA Refresher: The CUDA Programming Model 和 NVIDIA CUDA C++ Programming Guide 中的图表。

内存层次结构 的最底层是寄存器,用于存储由单个 线程 操作的信息。

寄存器中的值通常存储在 流式多处理器 (SM)寄存器文件 中,但也可能溢出到 GPU RAM 中的 全局内存,这会带来显著的性能损失。

与 CPU 编程类似,这些寄存器不能通过高级语言(如 CUDA C)直接操作。它们仅对底层语言可见,如 并行线程执行 (PTX)。它们通常由 ptxas 等编译器管理。编译器的目标之一是限制每个 线程 使用的寄存器空间,以便可以将更多 线程块 同时调度到单个 SM 中,从而提高 占用率

PTX 指令集架构中使用的寄存器记录在 此处。据我们所知,SASS 中使用的寄存器则没有公开文档。