如何使用易失性与2D共享内存

How to use volatile with 2D shared memory?

本文关键字:共享 内存 2D 何使用 易失性      更新时间:2023-10-16

我想知道如何声明一个指向二维共享内存的易失性指针,以及这是否会产生与一维数组相同的效果

__shared__ float 2d_array[32][32];
// not working: volatile T ** smem = sdata; 

请注意,您的"二维"共享内存阵列实际上只是一维的。这样的东西:

__shared__ volatile float array_2d[32][32]; 
volatile float *smem = &array_2d[0][0]; 
float val = *(smem + y + 32*x) // address of s2_array[x][y]

就是你想要的。静态数组array_2d按行主顺序存储,并且可以如我所示进行访问。