资源分配
线程束的本地执行上下文主要由以下资源组成:
- 程序计数器
- 寄存器
- 共享内存
由SM处理的每个线程束的执行上下文,在整个线程束的生存期中是保存在芯片内的。
SM的关键组件:
- CUDA核心
- 共享内存/一级缓存
- 寄存器文件
- 加载/存储单元
- 特殊功能单元
- 线程束调度器
每个SM都有32位的寄存器组,存储在寄存器文件中,在线程中进行分配。
SM(Streaming Multiprocessor,流多处理器)寄存器是指用于存储线程的状态和临时数据的存储器单元。每个线程在执行时都会被分配一定数量的寄存器,用于存储其局部变量、中间计算结果等。这些寄存器是线程私有的,不同线程之间不能直接访问对方的寄存器。
SM寄存器的作用包括但不限于以下几点:
存储线程状态:每个线程在执行时需要保存一些状态信息,如程序计数器、栈指针等,这些状态信息存储在寄存器中。
存储局部变量:线程执行过程中使用的局部变量和临时变量都存储在寄存器中。由于寄存器的读写速度非常快,因此可以提高程序的执行效率。
存储中间计算结果:在执行复杂计算过程中,线程可能需要存储一些中间计算结果,这些结果也存储在寄存器中,以便后续使用。
存储函数调用相关信息:如果线程调用了函数ÿ