При использовании привязки AMD C ++ и SDK (самой последней), выполняющих программу OpenCL, которая получает платформу, графический процессор, а затем компилирует 4 ядра, при запуске выдает вышеуказанную ошибку. Он отлично работает на моем компьютере, графический процессор которого поддерживает только до 1.1, но другие компьютеры, похоже, имеют вышеуказанную ошибку. Это проблема в компиляции (например, я должен определить некоторые макросы), в отсутствии драйвера, привязки C ++ или чего-то еще? Я не вызываю явно clRetainDevice в своем собственном коде — это где-то является частью привязки?
Это происходит, когда вы используете заголовочный файл связывания C ++ с заголовком OpenCL 1.2. Например, при запуске приложения, скомпилированного с помощью AMD SDK (OpenCL 1.2) на платформе NVIDIA (только OpenCL 1.1).
Для быстрой и грязной работы вы можете просто отредактировать заголовок AMD SDK cl.h и отменить обозначение препроцессора «CL_VERSION_1_2». Если вам не интересны 1.2 функции, это должно решить вашу проблему.
Других решений пока нет …