关于不同版本计算结果不同的问题

– --! 刚学习cuda不久,碰到了这个头痛的问题 不知各位朋友是否也遇到过
为了测试并行计算的性能价值 我跑了一个大数据量的重复加法的小程序 在1.1版本中都是正确的

但是在2.3版本下同样的程序结果却是不同的

纠结啊
global static void sumOfSquares(int num, int result, clock_t* time)
{
clock_t start = clock();
int sum = 0;
int i;
for(i = 0; i < DATA_SIZE; i++) {
sum += num[i] + num[i] + num[i] + num[i] + num[i] + num[i]+ num[i] + num[i] + num[i] + num[i] + num[i] + num[i];
}

*result = sum;
*time = clock() - start;
}

main函数里
int now=0;
now=clock();
int* gpudata, *result;

//now=clock();
cudaMalloc((void**) &gpudata, sizeof(int) * DATA_SIZE);
cudaMalloc((void**) &result, sizeof(int));
cudaMemcpy(gpudata, data, sizeof(int) * DATA_SIZE,
cudaMemcpyHostToDevice);
now=clock();
sumOfSquares<<<1, 1, 0>>>(gpudata, result,time);
int sum3;
cudaMemcpy(&sum3, result, sizeof(int), cudaMemcpyDeviceToHost);
cudaMemcpy(&time_used, time, sizeof(clock_t), cudaMemcpyDeviceToHost);
now=clock()-now;
printf(“sum(single thread): %d,device time: %d,hosttime: %d\n”, sum3,time_used,now);

[ 本帖最后由 jnrain3736 于 2010-3-24 13:19 编辑 ]