2015-12-16 4 views
1

Я пытаюсь инициализировать OpenCL 2.0 на AMD Fury X, и я смотрю на значение __OPENCL_VERSION__. 120 независимо от того, что. Я просматриваю свой водитель, и там есть #define __OPENCL_VERSION__ 120 и #define __OPENCL_VERSION__ 200.OpenCL 2.0 на AMD GPU

Должен ли быть специальный флаг где-нибудь, чтобы включить версию 2.0? У меня есть следующие платформы и устройства:

платформы

OpenCL 'AMD Accelerated Parallel Processing' на Advanced Micro Devices, Inc., версия OpenCL 2.0 AMD-APP (1912,5), FULL_PROFILE
устройства: Advanced Micro Devices, Inc. . 'Фиджи' (версия драйвера: 1912,5 (VM))
OpenCL версии: OpenCL 2.0 AMD-APP (1912,5)
OpenCL "C" версия: OpenCL C 2,0

EDIT

Ах, глупый. Кажется, это помогает указать -cl-std=CL2.0 в параметрах компилятора в clCreateProgramWithSource. Предполагается, что это ожидаемое поведение?

ответ

5

Предполагается, что это ожидаемое поведение?

Да. Вот соответствующий пункт из 2.0 спецификации OpenCL (раздел 5.8.4.5 Параметры Контролирование OpenCL C версии):

Если опция сборки -cl-станд не указан, самый высокий OpenCL C язык 1.x поддерживаемая каждым устройством, используется при компиляции программы для каждого устройства. Приложения должны указывать параметр -cl-std = CL2.0, если они хотят скомпилировать или создать свои программы с помощью OpenCL C 2.0.

+0

Должно быть, сложнее в отношении Google. У меня есть другая проблема, когда она скомпилирована таким образом и сохраняет двоичный файл, 'clCreateProgramWithBinary()' сбой приложения (некоторое нарушение доступа внутри вызова). У вас есть какой-то опыт? Хорошо работает без '-cl-std = CL2.0'. –

+0

Нет личного опыта, но любая авария, подобная этому, звучит как ошибка для меня. Лучше всего поднимите ошибку с AMD прямо для этого. – jprice

+0

Хорошо, спасибо. Я посмотрю, смогу ли я сообщить им об этом. –

Смежные вопросы