カーネルで共有メモリ配列を宣言すると、同じサイズの配列がすべてのスレッドで宣言されることを理解しています。のようなコード
__shared__ int s[5];
各スレッドで 20 バイトの配列を作成します。私が理解している共有メモリのアドレス指定は、すべてのスレッドにわたって普遍的であるということです。したがって、添え字 10 を次のように指定すると、
s[10] = 1900;
これは、すべてのスレッドでまったく同じメモリ位置です。添え字 10 の異なる共有メモリ アドレスに異なるスレッドがアクセスすることはありません。これは正しいですか? もちろん、コンパイラは添え字が範囲外であるという警告をスローします。