OpenCL Точность с плавающей точкой

Я обнаружил проблему с плавающей точкой хоста - клиента в OpenCL. Проблема заключалась в том, что при компиляции в x86 вычисляемые Opencl плавающие точки не находятся в тех же пределах, что и мой компилятор Visual Studio 2010. Однако при компиляции в x64 они находятся в том же пределе. Я знаю, это должно быть что-то сhttp://www.viva64.com/en/b/0074/

Источник, который я использовал во время тестирования:http://www.codeproject.com/Articles/110685/Part-1-OpenCL-Portable-Parallelism Когда я запустил программу в x86, это дало бы мне 202 числа, которые были бы равны, когда ядро и программа C ++ взяли квадрат из 1269760 чисел. Однако в 64-битной сборке 1269760 номеров были правильными, другими словами, 100%. Кроме того, я обнаружил, что ошибка между вычисленным результатом opencl и x86 c ++ составила 5,5385384e-014, что является очень маленькой долей, но недостаточно маленькой по сравнению с эпсилоном числа, равным 2,92212543378266922312416e-19.
Это потому, что ошибка должна быть меньше, чем у эпсилона, чтобы программа могла распознавать два числа как одно одинаковое число. Конечно, обычно нельзя сравнивать поплавки изначально, но хорошо знать, что пределы поплавка различны. И да, я попытался установить flt: static, но получил ту же ошибку.

Поэтому я хочу какое-то объяснение этого поведения. Заранее спасибо за все ответы.

Ответы на вопрос(2)

Ваш ответ на вопрос