存储器 | 位置 | 拥有缓存 | 访问权限 | 变量生存周期 |
寄存器 | GPU片内 | N/A | device 可读/写 | 与thread相同 |
局部存储器 | 板载显存 | 无 | device 可读/写 | 与thread相同 |
共享存储器 | GPU片内 | N/A | device 可读/写 | 与block相同 |
全局存储器 | 板载显存 | 无 | device 可读/写,host 可读/写 | 可在程序中保持 |
常数存储器 | 板载显存 | 有 | device 可读,host 可读/写 | 可在程序中保持 |
纹理存储器 | 板载显存 | 有 | device 可读, host 可读/写 | 可在程序中保持 |
主机端内存 | host内存 | 无 | host 可读/写 | 可在程序中保持 |
pinned memory | host内存 | 无 | host可读/写 | 可在程序中保持 |
寄存器(register):是GPU片上高速缓存器,基本单元是寄存器文件,每个线程拥有的寄存器文件数量有限,编程时不要为每个线程分配过多的私有变量。
局部存储器(local memory):寄存器如果被消耗完,将被存储在局部存储器中,因数据在显存上,因此访问速度慢。
共享存储器(shared memory):线程间通信延迟最小。
全局存储器(global memory):占据显存绝大部分,有较高的访问延迟。