C++ 如何将volatile与2D共享内存一起使用?

C++ 如何将volatile与2D共享内存一起使用?,c++,cuda,shared-memory,C++,Cuda,Shared Memory,我想知道如何声明指向二维共享内存的易失性指针 如果这将产生与一维数组相同的效果 __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 =

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

__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
按行主顺序存储,可以访问,如我所示。

尝试了您的建议,并得到以下错误:“volatile float(*)[32U]”类型的值不能用于初始化“volatile float*”类型的实体。@diver\u 182:抱歉,我发布它时把代码弄乱了。看一下编辑。