Различия между cl_khr_fp64 и cl_amd_fp64? - PullRequest
1 голос
/ 02 февраля 2012

Я только что обнаружил, что на моем (довольно дорогом) Radeon 6970 поддерживается только расширение cl_amd_fp64. Я получаю странные результаты в некоторых частях кода (при доступе к значению 0.005 фактически использует 1.99916e+37?) При работе с cl_amd_fp64 Использование cl_khr_fp64 с Intel SDK на процессоре прекрасно работает. (Входные буферы точно такие же)

Страница расширения дает очень мало информации.

Каковы различия между ними?

1 Ответ

2 голосов
/ 02 февраля 2012

cl_khr_fp64 - официальное расширение точности с плавающей запятой Khronos. Требуется, чтобы арифметика соответствовала стандарту IEEE 754-2008, а также поддерживался полный диапазон векторных типов OpenCL и функций стандартной библиотеки.

Изначально AMD реализовала только часть того, что требуется для расширения cl_khr_fp64, поэтому они выпустили собственное расширение cl_amd_fp64 для поддержки двойной точности на своем оборудовании GPU. Когда он впервые появился, диапазон поддержки был очень ограниченным (возможно, только +, -, * с нестандартным поведением округления IIRC), но он постепенно расширялся с последующими выпусками SDK и новыми аппаратными ревизиями. Они перечисляют, что поддерживается в их примечаниях к выпуску, если моя память работает правильно.

Я давно не следил за их развитием, поэтому не уверен, почему то, что вы видите, может происходить. Если у вас установлена ​​последняя версия драйвера и потокового SDK, я бы посоветовал собрать случай с репро и отправить с ними отчет об ошибке. Возможно, вы используете что-то, что они не поддерживают или не гарантируют результаты, но также может быть, что вы нашли ошибку.

...