0

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

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

1 回答 1

2

请注意,您的“二维”共享内存数组实际上只有一维。所以是这样的:

__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以行主要顺序存储,并且可以按我所示的方式访问。

于 2012-07-18T14:06:19.593 回答