Eu tenho tentado fazer com que PyOpenCL e PyCUDA sejam executados em uma máquina Linux Mint. Eu tenho coisas instaladas, mas os scripts de demonstração falham com o erro:
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)
Pacotes instalados relevantes:
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
Como não posso postar todos os links apropriados aqui, por favor, veja o post de estouro de pilha associado para links que refletem minhas tentativas anteriores de resolver este problema.
Uma postagem descreveu um cenário no qual a implementação opencl / cuda instalada pelo gerenciador de pacotes não configurava alguns links simbólicos corretamente. Esse problema não parece estar presente no meu sistema.
Houve uma incompatibilidade de números de versão entre os drivers gráficos (nvidia-340) e o pacote nvidia-opencl (352). Eu atualizo os drivers gráficos para nvidia-352-updates-dev
, mas o problema continua.
Existe um bug no Arch linux que parece girar em torno dos arquivos de dispositivos necessários que não estão sendo criados. No entanto, verifiquei que /dev/nvidia0
e /dev/nvidiactl
existem e têm permissões 666
, por isso devem estar acessíveis.
Outra postagem do Stackoverflow sugere a execução das demos como root. Eu tentei isso e o comportamento não muda.
As instruções mais antigas de instalação do cuda / opencl dizem para baixar os drivers diretamente do site da NVidia. Por favor, veja uma atualização sobre o resultado disso no final do post (foi catestrphic)
O mesmo erro foi relatado para placas ATI em um sistema Linux diferente e foi resolvido colocando os arquivos apropriados em /usr/lib/OpenCL/vendors
. Esse caminho não é usado no meu sistema. No entanto, eu tenho /etc/OpenCL/vendors/nvidia.icd
, que contém a linha libnvidia-opencl.so.1
, sugerindo que meu problema é diferente.
Este erro foi observado no OSX, mas por razões não relacionadas. Mensagens de erro semelhantes para PyCUDA no OSX também parecem não estar relacionadas.
Este erro pode ocorrer sob acesso remoto, uma vez que os arquivos do dispositivo não são inicializados se o X não estiver carregado. No entanto, estou testando isso em um ambiente de área de trabalho. Além disso, executei os comandos manuais sugeridos nesse encadeamento apenas para ter certeza, e eles são redundantes, pois as entradas /dev
relevantes já existem.
Algumas pessoas sugerem que os exemplos sejam executados algumas vezes ou executados como sudo, para que as coisas sejam iniciadas. Isso não parece ajudar.
Uma postagem descreveu como o erro% CU_de% CUDA semelhante foi causado por não ter o usuário no grupo cuInit failed: no device
. Para verificar, eu corri video
, mas isso não resolveu meu problema.
No passado, as atualizações de rotina quebraram o suporte ao CUDA. Eu não tenho tido tempo para explorar toda a permutação de números de versão de pacotes, e é possível que o rebaixamento de alguns pacotes possa mudar a situação. No entanto, sem mais intuição sobre a origem da questão, não vou investir tempo nisso, pois não sei se isso funcionará.
O resultado mais comum da pesquisa do Google por esse erro, exibido quatro vezes em sites diferentes nas primeiras páginas dos resultados de pesquisa, é um encadeamento de e-mail curto e não resolvido na lista PyOpenCL. Verificando os bits de permissão para usermod -a -G video $USER
e /dev/nvidia0
é sugerido. Na minha máquina, /dev/nvidiactl
tem acesso de leitura e gravação a esses dispositivos, então não acho que seja a origem do problema.
Eu também tentei construir e instalar o PyOpenCL da última fonte, em vez de usar a versão nos repositórios. Isso está falhando em uma fase anterior que sugere para mim que não está construindo corretamente.
O problema parece ser que PyCUDA / PyOpenCL não consegue localizar a placa gráfica. Existem vários problemas conhecidos que podem causar isso, mas nenhum deles parece se aplicar aqui. Estou sentindo falta de algo e não sei mais o que fazer.
Eu tentei reinstalar do deb user/group/other
, baixado diretamente da NVidia, mas ele não parece instalar - eu nem consegui encontrar o comando deviceQuery. Eu tentei reinstalar a partir do runfile cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
. O instalador observou que a configuração da minha máquina não era suportada. Eu continuei de qualquer maneira como um último esforço. De fato, agora a configuração do X está completamente quebrada e a máquina não pode inicializar na tela de login. Eu não consegui consertar isso.
Tags python nvidia ubuntu linux-mint