だから、ここに質問があります。大きな1D配列(ラティスを表す)があるCUDAで計算を行い、それを長さ#partのサブ配列に分割し、各スレッドに各サブ配列で2、3の計算を実行させたいと思います。
より具体的には、いくつかのスレッド#threadsといくつかのブロック#blocksがあるとしましょう。配列のサイズはN=2 * #part * #threads*#blocksです。サブアレイに1から2*#blocks *#threadsまでの番号を付ける場合、最初に#threads *#blocksスレッドを使用して偶数のサブアレイで計算を実行し、次に同じ数のスレッドを使用して計算を実行します。奇数のサブ配列。
サブ配列がどこから始まるかを示すローカルインデックスを各スレッドに含めることができると思いました。
そこで、次のインデックスを使用しました。
localIndex = #part * (2 * threadIdx.x + var) + 2 * #part * #Nthreads * blockIdx.x;
varは、偶数または奇数のサブ配列でスレッドに計算を実行させるかどうかに応じて、1または0のいずれかになります。
実行しようとしましたが、複数のブロックを使用すると問題が発生するようです。インデックス作成で何か問題がありましたか?
ありがとう。