Краткое содержание

Краткое содержание

Я пытаюсь запустить PyOpenCL и PyCUDA на машине Linux Mint. У меня все установлено, но демонстрационные скрипты вылетают с ошибкой:

pyopencl.cffi_cl.LogicError: clgetplatformids failed: PLATFORM_NOT_FOUND_KHR

Конфигурация

$ uname -a && cat /etc/lsb-release && lspci | grep NV

    Linux 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
    DISTRIB_DESCRIPTION="Linux Mint 17.3 Rosa"
    01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)

Соответствующие установленные пакеты:

libcuda1-352-updates
libcudart5.5:amd64
nvidia-352-updates
nvidia-352-updates-dev
nvidia-cuda-dev
nvidia-cuda-toolkit
nvidia-opencl-icd-352-updates
nvidia-profiler
nvidia-settings
ocl-icd-libopencl1:amd64
ocl-icd-opencl-dev:amd64
opencl-headers
python-pycuda
python-pyopencl
python3-pycuda
python3-pyopencl

Исследовать

Поскольку я не могу разместить здесь все соответствующие ссылки,пожалуйста, ознакомьтесь с соответствующим постом Stack Overflow, где приведены ссылки, отражающие мои предыдущие попытки решить эту проблему.

В одном посте описывался сценарий, в котором package-manager установил реализацию opencl/cuda, которая не настраивала некоторые симлинки правильно. Похоже, что эта проблема не присутствует в моей системе.

Было несоответствие номера версии между графическими драйверами (были nvidia-340) и пакетом nvidia-opencl (352). Я обновляю графические драйверы до , nvidia-352-updates-devно проблема остается.

В Arch Linux есть ошибка, которая, похоже, связана с тем, что необходимые файлы устройств не создаются. Однако я проверил, что и /dev/nvidia0существуют /dev/nvidiactlи имеют разрешения 666, поэтому они должны быть доступны.

Другой пост Stackoverflow предлагает запустить демо от имени root. Я попробовал это, и поведение не изменилось.

Старые инструкции по установке cuda/opencl говорят о загрузке драйверов напрямую с сайта NVidia. Пожалуйста, посмотрите обновление о результате этого в конце поста (это было катастрофично)

Такая же ошибка была зарегистрирована для карт ATI на другой системе Linux и была устранена путем помещения соответствующих файлов в /usr/lib/OpenCL/vendors. Этот путь не используется в моей системе, однако у меня есть , /etc/OpenCL/vendors/nvidia.icdкоторый содержит строку libnvidia-opencl.so.1, что говорит о том, что моя проблема отличается.

Эта ошибка наблюдалась на OSX, но по несвязанным причинам. Похожие сообщения об ошибках для PyCUDA на OSX также, по-видимому, не связаны.

Эта ошибка может возникнуть при удаленном доступе, поскольку файлы устройств не инициализируются, если X не загружен. Однако я тестирую это в среде рабочего стола. Кроме того, я выполнил ручные команды, предложенные в этой теме, просто чтобы убедиться, и они избыточны, поскольку соответствующие /devзаписи уже существуют.

Некоторые предлагают запустить примеры несколько раз или запустить их как sudo, чтобы все заработало. Кажется, это не помогает.

В одном посте описывалось, как похожая cuInit failed: no deviceошибка CUDA была вызвана отсутствием пользователя в videoгруппе. Чтобы проверить, я запустил usermod -a -G video $USER, но это не решило мою проблему.

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

Наиболее распространенный результат поиска Google для этой ошибки, появляющийся четыре раза с разных сайтов на первых страницах результатов поиска, — это короткая и неразрешенная ветка электронной почты в списке PyOpenCL. Рекомендуется проверить биты разрешений для /dev/nvidia0и . На моей машине все имеют доступ на чтение и запись к этим устройствам, поэтому я не думаю, что это источник проблемы./dev/nvidiactluser/group/other

Я также пробовал собрать и установить PyOpenCL из последнего исходника, а не использовать версию в репозиториях. Это дает сбой на более ранней стадии, что говорит мне о том, что сборка происходит неправильно.

Краткое содержание

Проблема, по-видимому, в том, что PyCUDA/PyOpenCL не может обнаружить графическую карту. Есть несколько известных проблем, которые могут вызвать это, но ни одна из них, похоже, не применима здесь. Я что-то упускаю и не знаю, что еще делать.

Дальнейшие обновления

Я попробовал переустановить из deb cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb, скачанного напрямую с NVidia, но, похоже, он не устанавливается — я даже не смог найти команду deviceQuery. Я попытался переустановить из runfile cuda_7.5.18_linux.run. Установщик отметил, что конфигурация моей машины не поддерживается. Я все равно продолжил в качестве последней попытки. Действительно, теперь конфигурация X полностью сломана, и машина не может загрузиться до экрана входа в систему. Я не смог это исправить.

Связанный контент