CPU 和 GPU 上的不同结果

Different results on CPU and GPU

我使用 C++CUDA C 在 CPU 和 GPU 上实现了相同的算法。为了检查结果是否正确,我检查两者计算的 2 个 double 数组是否相同,精度为 1.0E-8 。结果是 2 个数组不一样。是否可能因为我正在处理两个不同的实体或我的代码中可能存在一些错误而得到不同的结果?

我必须增加到 1.0E-3 才能认为它们相等!

除非 dev_s 是本地线程,否则您将有多个线程写入此处的同一内存位置:

dev_s[i] = dev_s[i-1] + 0.5*(dev_matrix[index]+dev_matrix[index-1]);