一、引言:多维数据在 GPU 中的广泛使用
在 GPU 编程中,多维数据结构(如图像、矩阵、体素、张量)非常常见。这些数据在内存中的访问方式对程序性能有重大影响。
多维访问模式优化的目标是:
-
最大化全局内存访问合并(coalescing)
-
避免 bank conflict 和 uncoalesced memory transaction
-
提高共享内存利用率和缓存命中率
二、C/C++ 中的多维数组布局回顾
行主序(Row-major)
C/C++ 默认采用行主序存储,二维数组 A[i][j] 的物理地址是:
地址 = base + (i * cols + j)
即 行是连续的,列是跨 stride 的。
示例
float A[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12} };
在内存中的线性布局为:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
访问 A[i][j] 时,如果 i 不变,j
订阅专栏 解锁全文
456

被折叠的 条评论
为什么被折叠?



