Доброго времени суток.
Есть карточка ATI Radeon HD 4870. пытаюсь разобраться, поддерживает ли она двойную точность или нет. Как смотрю - беру OpenCL- функцию GetDeviceInfo и прошу у неё CL_DEVICE_PREFERRED_
VECTOR_WIDTH_DOUBLE. В описании сказано, что возвращает 0, если "cl_khr_fp64 extension is not
supported". Собственно ноль и возвращает. Правильно ли я понял и спросил мой device?
Теперь в самой kernel-функции, предварительно всё же включив использование двойной точности: #pragma OPENCL EXTENSION cl_khr_fp64 : enable пытаюсь воспользоваться банальным косинусом. ничего не выходит - возвращается ошибка CL_INVALID_PROGRAM. Но при этом код типа:
double a = 1, b = 2;
double c = a+b;
вполне работает....
Вот собственно в чём вопрос... Для работы необходима двойная точность - ибо использование float приводит к ужасающе очевидным неправильным результатам. То ли я что-то неправильо сделал и не понял, то ли идти к начальнику и говорить, что нужна новая видюха :)