Ошибка -1001 в clGetPlatformIDs Call!
Я пытаюсь начать работу с OpenCL. У меня две графические карты NVidia, я установил "драйвер разработчика", а также SDK с веб-сайта NVidia. Я собрал демо, но когда я запустил
./oclDeviceQuery
Я вижу:
OpenCL SW Info:
Ошибка -1001 в вызове clGetPlatformIDs!!!
Как я могу это исправить? Означает ли это, что мои карты nvidia не могут быть обнаружены? Я запускаю Ubuntu 10.10, а сервер X работает правильно с драйвером nvidia.
Я уверен, что проблема не связана с правами доступа к файлам, так как она не работает с sudo.
Ответы
Ответ 1
В моем случае я решил это, установив пакет nvidia-modprobe, доступный в ubuntu (utopic/multiverse). И сам драйвер (v346) был установлен из https://launchpad.net/~mamarley/+archive/ubuntu/nvidia
Конкретно, я установил nvidia-opencl-icd-346, nvidia-libopencl1-346, nvidia-346-uvm, nvidia-346 и libcuda1-346. Не уверен, что все они необходимы для OpenCL.
Ответ 2
Это результат не установки части ICD в среде Nvidia openCL. Профиль ICD проинструктирует ваше приложение о различных реализациях openCL, установленных в системе, поскольку могут сосуществовать несколько реализаций от разных поставщиков. Если ваше приложение не находит информацию ICD, оно дает ошибку -1001.
Ответ 3
Такая же проблема для меня в системе Linux. Решение состоит в том, чтобы добавить пользователя в группу видео:
# sudo usermod -aG video your-user-name
Ответ 4
Запустите программу как пользователь root. В случае успеха: у вас возникнут проблемы с расширением cl_khr_icd- для загрузки драйвера поставщика.
Если вы не используете X11, вам необходимо создать файлы устройства вручную или (boot -) script:
ERROR: clGetPlatformID -1001 при запуске кода OpenCL (Linux)
Ответ 5
Поскольку я просто потратил пару часов на это, я думал, что поделюсь:
Я получил ошибку, потому что был подключен к машине на удаленный рабочий стол (mstsc). На самой машине все работало нормально.
Мне сказали, что он должен работать с TeamViewer, кстати.
Ответ 6
Не знаю, решила ли вы эту проблему, но у меня была такая же проблема и она была решена в этом сообщении: ERROR: clGetPlatformID -1001 при запуске кода OpenCL (Linux)
Надеюсь, что это поможет!
Ответ 7
Я решил это в Ubuntu 13.10 saucy для intel opencl по созданной ссылке:
sudo ln -s /opt/intel/opencl-1.2-3.2.1.16712/etc/intel64.icd /etc/OpenCL/vendors/nvidia.icd
Ответ 8
Я только столкнулся с этой проблемой на ubuntu 14.04, и я не мог найти ЛЮБОЙ рабочий ответ в любом месте в сети, включая этот поток (хотя это было первым, что появилось в Google). То, что в конечном итоге работало для меня, было удалить ВСЕ предыдущее программное обеспечение nvidia, а затем переустановить его с помощью файла .run, предоставленного на веб-сайте nvidia. По какой-то причине установка компонентов с помощью apt-get кажется неудачной.
1) Загрузите файл CUDA.run: https://developer.nvidia.com/cuda-downloads
2) Очистите все предыдущие пакеты nvidia
sudo apt-get purge nvidia-*
3) Установите все компоненты файла запуска (вам, вероятно, придется остановить X или перезапустить в режиме восстановления, чтобы запустить это)
sudo sh cuda_X.X.XX_linux.run
Ответ 9
Это может быть связано с запросом clGetPlatformID несколькими потоками одновременно
Ответ 10
Вы должны получить количество платформ, выделить память для платформ, снова получить эти платформы, а затем создать контекст с этой платформы. Существует хороший пример:
http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71