利用cuda进行多gpu编程,为什么在相同输入的情况下,两个gpu的输出却不相同?
反复尝试多次,每次都是这种情况,百思不得其解,求指示。
这是有可能的,因为浮点数精度的问题,计算先后顺序不同可能结果不同,看如下例子:
10^10-10^10+10^-10
10^10+10^-10-10^10
在数学上两者等价的
但是因为浮点数精度问题,很可能前者的结果是10^-10,后者的结果是0
GPU运算是并行运算,所以顺序不可控,导致结果存在不同。
可以在多阶段输出上加上打印日志,要么就是数据加锁,还有一楼高手说的问题