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:抱歉,我发布它时把代码弄乱了。看一下编辑。