問題は:
共有配列perBlockMsg[i]
は 0 に等しいすべての値を保持しますが、値と同様に 0 より大きい 10 進数値であることが期待されd_msg[]
ます。d_msg[]
iaは2D配列で、それを1Dにフラット化し、データがデバイスに正常に渡されることを確認しました。
__global__ void add( int *d_msg, int *d_checkSumArray) {
int i=threadIdx.x;
int j=blockIdx.x;
extern __shared__ int perBlockMsg[];
if(d_msg[i* gridDim.x + j]<=1)
{
perBlockMsg[i]=d_msg[i* gridDim.x + j];
}
__syncthreads();
if(j==2 && i<=gridDim.x) //here i is the row number
{
d_checkSumArray[i]=perBlockMsg[i];
}
}
カーネル呼び出しは以下のようでした (たとえば) M=7、R=4 で、これら 2 つの変数も動的です
add<<<R,(M+R), (M+R)* sizeof(int)>>>( d_msg, d_checkSumArray );
誰かが問題の可能性がある場所を指摘できますか?