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

i5desfxk  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(93)

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

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

yk9xbfzb1#

请注意,您的“二维”共享内存数组实际上只是一维的。比如说

__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以行优先的顺序存储,并且可以像我所示的那样访问。

相关问题