(这个问题是代朋友问的)
他用OpenCL编写的程序,为什么GPU仿真的图形 跟CPU仿真出来的图形 不吻合呢?
这两个算法 明明是一样的
您好,欢迎莅临CUDAZONE,也欢迎您的朋友莅临。
我觉得有可能是以下两种可能之一:
1:OpenCL写的算法本身写错了,没有表达作者想要表达的意图。
2:尽管逻辑上OpenCL的代码表达了作者的意图,但是因为计算误差,求和顺序等等原因,造成结果有差异。
所以,还请您进一步提供相关信息。
祝您编码顺利~
楼主你好!
(1)其中一个的代码可能存在BUG, 导致存在的不同结果。
(2)如果(1)中情况不存在,那么有可能是“算法”和写出“代码”是不同的,代码可能不符合您的算法原意,从而导致了结果不同。
(3)如果(1)(2)均是对的,那么还可能您的代码使用了浮点数,GPU上的浮点数的舍入,运算精度等原因,导致了结果不同。
因为楼主只有空泛的“算法一样的,结果为何不同啊”的提问,所以只能从这几个方面简单阐述。
[attach]2909[/attach]
从图上目测的话,似乎不像是精度问题造成的,因为差距太明显了。
所以我估计是作者程序写的有问题,又或者是保存数据的时候搞错了。总之应该是人为的问题。
大致目测如上,供LZ参考,预祝LZ腊八节吃好喝好~
的确,从结果来看差距太大,可能楼主需要从算法的角度仔细查看,毕竟串行和并行在算法上是有一定区别的,比如同步的问题!
谢谢大家的回复