不知道有沒有高手可以解答以下問題?
資料形式: 600列800行的隨機數
目的: 把每一行的數據加起來
初始化:
sum[600]={0.0}
data[600x800]= 上述資料
CUDA程式1: 成功
// dim3 gridsize(1, 1, 1);
// dim3 blocksize(600, 1, 1);
for (int j = 0; j < 800; j+= 1){
sum[(blockDim.x*bdx + tdx)] = sum[(blockDim.x*bdx + tdx)]
+ data[600*j + (blockDim.x*bdx +tdx)];
}
CUDA程式2: 失敗
// dim3 gridsize(40, 1, 1);
// dim3 blocksize(600, 1, 1);
for (int j = 0; j < 800; j+= 40){
sum[0*(j + bdx) +tdx] = sum[0*(j + bdx) +tdx]
+ data[600*(j + bdx) +tdx];
}
請問程式2失敗的原因是?可以怎麼寫呢?
我自己猜測是: 例如, sum[1]無法同時處理40筆資料
請教大家, 謝謝