● CUDA-Z软件Memory存储器界面
第二个界面表示了GPU的存储器能力,实际上也就是本地显存状态。
除了编程模型和执行模型,CUDA也规定了存储器模型,线程在执行时,将会访问到处于多个不同存储空间的数据。
每一个线程拥有自己的私有存储器寄存器和局部存储器;每一个线程块拥有一块共享存储器(Shared memory);最后,grid中所有的线程都可以访问同一块全局存储器(Global memory)。除此之外,还有两种可以被所有线程访问的只读存储器:常数存储器(Constant memory)和纹理存储器(Texture memory),它们分别为不同的应用进行了优化。全局存储器、常数存储器和纹理存储器中的值在一个内核函数执行完成后,将被保持,可以被同一程序中的其他内核函数调用。
最新的GF100存储架构
寄存器(Register)是GPU片上高速缓存器,执行单元可以以极低的延迟访问。寄存器的基本单元式寄存器文件(register file),每个寄存器文件大小为32bit。对于每个线程,局部存储器(Local memory)也是私有的。如果寄存器被消耗完,数据将被存在局部存储器中。共享存储器(Shared memory)也是GPU片内的高速存储器。它是一块可以被同一block中的所有线程访问的可读写存储器。它的访问速度几乎和寄存器一样快,所以是实现线程间通信的延迟最小的方法。全局存储器(Global memory)位于显存(占据了显存的绝大部分),CPU和GPU都可以对其进行读写访问。常数存储器(Constant memory)中的数据位于显存,但拥有缓存加速以节约带宽,常数存储器是只读的地址空间。纹理存储器(Texture memory)也是一种只读存储器,由GPU负责纹理渲染的图形专用单元发展而来,具备一些特殊功能。
Total Global代表本地显存容量,这是是扣除了2D帧后缓存的显存容量。
Shared Per Block代表每个block的缓存容量。
Pitch代表最高点,可以理解为最大线性单位缓存,就是每个SM可以在单位周期内使用的缓存总数。
Total Constant代表连续缓存块数。
Texture Alignment代表纹理簇大小。
GPU Overlap翻译为GPU重叠,实际上可以理解为GPU的SLI扩展能力。