如何使用volatile与2D共享内存?

时间:2012-07-18 13:54:18

标签: c++ cuda shared-memory

我想知道如何来声明指向二维共享内存的易失性指针 如果这对于一维数组具有相同的效果

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

1 个答案:

答案 0 :(得分: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以行主要顺序存储,可以按照我的显示进行访问。