CUDA GPU内存结构

了解CUDA编程首先必不可少的,需要熟悉英伟达GPU的内存分布,如下图:

CUDA GPU内存结构

整体内存结构按照层次划分,和OpenCL类似:

  • SM:流处理器簇,为GPU的对小硬件调度单位,一次性可以调度多个SP
  • SP:GPU 硬件内核执行单元,每个SP相当于一个CPU核。
  • Register File:寄存器文件,访问速度最快的存储单元,用来存储SP上运行的线程内部活跃的寄存器。
  • shared memory:共享内存,每个SM都有一个共享内存,在同一个SM内的共享内存,SP都可以访问到,而且共享内存是内核代码可以申请控制。
  • Texture Cache:纹理内存 为全局内存的一个特殊视图,用来存储插值计算所需的数据,例如,显示2D或3D图像时需要的查找表。拥有基于硬件进行插值的特性。
  • Constant Cache:常量内存,用于存储只读的数据,所有的GPU卡均对其进行缓存,与纹理内存一样,常量内存也是全局内存建立的一个视图。
  • Global Memory:全局内存,所有kernel都可以访问到,速度最慢
  • SPU: Special-Purpose Unit 专用单元,执行如高速的24位正弦函数/余弦函数/指数函数操作等类似的特殊硬件指令。