GeForce GTX 650是否支持OpenCL1.2?

请直接按要求回复,如果您认为存在GPU比较出错的情况,请:
“请给出一个float, 它的二进制表示的值>0.1, 但是却得到相反的比较结果。谢谢”

好吧…

0.099999994
0x3DCCCCCC
00111101110011001100110011001100

0.10000000
0x3DCCCCCD
00111101110011001100110011001101

0.10000001
0x3DCCCCCE
00111101110011001100110011001110

感谢给出数据。

第1个float(0x3dcccccc)比较中间的float(0x3dcccccd), 结果必然是小于。
第3个float(0x3dccccce)比较中间的float(0x3dcccccd), 结果必然是大于。

这个所有的GPU上同样都应该得到这个结果。

如果您的某款GPU比较出错,能否发下型号?以便单独处理?谢谢。

横扫版主你好 我可能描述的不清楚是这样的
我是说同一个算法CPU得出的结果可能是0x3DCCCCCC,GPU得出的结果可能是0x3DCCCCCE

经过我这几天查找资料,我觉得这个误差是的确存在并且符合IEEE754标准的.

但是我后续的算法中 有一个对计算结果与0x3DCCCCCD的判断

所以CPU和GPU最终的结果会因为判断的不同有一些的误差

LZ您好:

1:同一个确切的浮点数在CPU和GPU上的表示是相同的,以及比较判断也是相同的。

2:不同的软硬件环境下浮点数的结果并无法保证绝对相同,这个前面已经多有叙述。考虑到您的数据是0~1范围内的,而且是1e-7的差别,这个有时已经接近单精度浮点数表示的极限精度,计算结果出现差别也属正常。

3:您的算法比较取决于一个确定的阈值,但是用来比较的数据无论是CPU生成还是GPU生成,都只代表一种浮点计算下的结果,都不是精确值的。以及一般无法强迫GPU结果和CPU结果完全一致的。

4:如前所述,您可以尝试使用双精度浮点计算,或许能有所改善,如果您真的十分纠结在1e-7上两者结果不同。

另:CUDA 5自带pdf一枚,名曰:Floating Point on NVIDIA GPU White Paper。您也可以参考。

大致如此,供您参考。

祝您编码顺利~

修正一处笔误。

十分感谢~

不客气的,欢迎您常来论坛。

祝您编码顺利~