为什么要使用共享内存呢,因为共享内存的访问速度快。这是首先要明确的,下面详细研究。
cuda程序中的内存使用分为主机内存(host memory) 和 设备内存(device memory),我们在这里关注的是设备内存。设备内存都位于gpu之上,前面我们看到在计算开始之前,每次我们都要在device上申请内存空间,然后把host上的数据传入device内存。cudaMalloc()申请的内存,还有在核函数中用正常方法申请的变量的内存。这些内存叫做全局内存,那么还有没有别的内存种类呢?常用的还有共享内存,常量内存,纹理内存,他们都用一些不正常的方法申请。
他们的申请方法如下:
共享内存:__shared__ 变量类型 变量名;
常量内存:__constant__ 变量类型 变量名;
纹理内存:texture<变量类型> 变量名;
存储类型 | 寄存器 | 共享内存 | 纹理内存 |
网友评论 |