输出图像相差太大,为是什么原因?

(这个问题是代朋友问的)
他用OpenCL编写的程序,为什么GPU仿真的图形 跟CPU仿真出来的图形 不吻合呢?
这两个算法 明明是一样的

您好,欢迎莅临CUDAZONE,也欢迎您的朋友莅临。

我觉得有可能是以下两种可能之一:

1:OpenCL写的算法本身写错了,没有表达作者想要表达的意图。

2:尽管逻辑上OpenCL的代码表达了作者的意图,但是因为计算误差,求和顺序等等原因,造成结果有差异。

所以,还请您进一步提供相关信息。

祝您编码顺利~

楼主你好!

(1)其中一个的代码可能存在BUG, 导致存在的不同结果。
(2)如果(1)中情况不存在,那么有可能是“算法”和写出“代码”是不同的,代码可能不符合您的算法原意,从而导致了结果不同。
(3)如果(1)(2)均是对的,那么还可能您的代码使用了浮点数,GPU上的浮点数的舍入,运算精度等原因,导致了结果不同。

因为楼主只有空泛的“算法一样的,结果为何不同啊”的提问,所以只能从这几个方面简单阐述。
:slight_smile:

[attach]2909[/attach]

从图上目测的话,似乎不像是精度问题造成的,因为差距太明显了。

所以我估计是作者程序写的有问题,又或者是保存数据的时候搞错了。总之应该是人为的问题。

大致目测如上,供LZ参考,预祝LZ腊八节吃好喝好~

的确,从结果来看差距太大,可能楼主需要从算法的角度仔细查看,毕竟串行和并行在算法上是有一定区别的,比如同步的问题!

谢谢大家的回复