0

2 次元の共有メモリへの揮発性ポインターを宣言する方法と、これが1 次元配列の場合と同じ効果があるかどうか疑問に思っていました。

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

1 に答える 1

2

「2 次元」の共有メモリ配列は、実際には 1 次元のみであることに注意してください。だから、このようなもの:

__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 に答える