3.14. 什么是寄存器?
寄存器是 内存层次结构 中与单个 线程 相关联的内存(左图)。改编自 NVIDIA 的 CUDA Refresher: The CUDA Programming Model 和 NVIDIA CUDA C++ Programming Guide 中的图表。
内存层次结构 的最底层是寄存器,用于存储由单个 线程 操作的信息。
寄存器中的值通常存储在 流式多处理器 (SM) 的 寄存器文件 中,但也可能溢出到 GPU RAM 中的 全局内存,这会带来显著的性能损失。
与 CPU 编程类似,这些寄存器不能通过高级语言(如 CUDA C)直接操作。它们仅对底层语言可见,如 并行线程执行 (PTX)。它们通常由 ptxas 等编译器管理。编译器的目标之一是限制每个 线程 使用的寄存器空间,以便可以将更多 线程块 同时调度到单个 SM 中,从而提高 占用率。