楼主:
goodzey (--)
2023-05-18 23:38:56不知道有没有高手可以解答以下问题?
资料形式: 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笔资料
请教大家, 谢谢