1. 共享内存
共享内存通过__shared__内存空间说明符进行分配。
共享内存预计比全局内存快得多,这一点在线程层次结构中已提及并在共享内存章节有详细说明。它可用作暂存内存(或软件管理的缓存),以减少CUDA块对全局内存的访问,如下述矩阵乘法示例所示。
以下代码示例是一个未利用共享内存的简单矩阵乘法实现。每个线程读取A的一行和B的一列,并计算C的相应元素,如图8所示。因此,A会从全局内存中被读取B.width次,而B会被读取A.height次。
// 矩阵按行优先存储方式存储:
// M(row, col) = *(M.elements + row * M.width + col)
typedef struct {
int width; # 矩阵的宽度(列数)