我使用C++
和CUDA C
在CPU和GPU上实现了相同的算法。为了检查结果是否正确,我检查两个计算的2个double数组是否相同,精度为1.0E-8。结果是2个阵列不一样。是否可能有不同的结果,因为我正在处理两个不同的实体,或者我的代码中可能存在一些错误?
我必须增加到1.0E-3才能认为它们相等!
答案 0 :(得分:0)
除非dev_s
是本地线程,否则您将在此处将多个线程写入相同的内存位置:
dev_s[i] = dev_s[i-1] + 0.5*(dev_matrix[index]+dev_matrix[index-1]);