現在CUDAを用いて並列計算を行っています。
使っているGPUはTesla k20です。
thread数256, block数256で計算を行っています
宣言は
dim3 blocks(256,1,1)
dim3 threads(256,1,1)
デバイス側の関数は以下のようになっています
A_d[blockIdx.x] = 0.0F;
atomicAdd(&A_d[blockIdx.x], B_d[blockIdx.x*threadIdx.x]*C_d[blockIdx.x]);
__syncthreads();
for文で表すと
for(int i=0; i<256; i++){
for(int j=0; j<256; j++){
A_d[i] += B[j*256+i]*C[i];
}
}
のようなことを行いたいのですが結果を見ると全て加算されていない
(例えば256回1を足す計算なのに200となってしまう)
どうしたらちゃんと加算が行われるのでしょうか?
乱文で申し訳ないですがよろしくお願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/10 04:37
2015/07/10 04:59 編集
2015/07/10 05:02
2015/07/10 06:43
2015/07/10 06:45