Resumo

Resumo

Tenho tentado fazer com que PyOpenCL e PyCUDA sejam executados em uma máquina Linux Mint. Tenho coisas instaladas, mas os scripts de demonstração falham com o erro:

pyopencl.cffi_cl.LogicError: clgetplatformids failed: PLATFORM_NOT_FOUND_KHR

Configuração

$ 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

Pesquisar

Como não posso postar todos os links apropriados aqui,consulte a postagem de estouro de pilha associada para obter links que refletem minhas tentativas anteriores de resolver esse problema.

Uma postagem descreveu um cenário em que a implementação opencl/cuda instalada pelo gerenciador de pacotes não configura alguns links simbólicos corretamente. Esse problema não parece estar presente no meu sistema.

Houve uma incompatibilidade de número de versão entre os drivers gráficos (nvidia-340) e o pacote nvidia-opencl (352). Eu atualizo os drivers gráficos, nvidia-352-updates-devmas o problema permanece.

Há um bug no Arch Linux que parece girar em torno da não criação de arquivos de dispositivo necessários. No entanto, verifiquei que and /dev/nvidia0existem /dev/nvidiactle têm permissões 666, portanto devem estar acessíveis.

Outra postagem do Stackoverflow sugere executar as demonstrações como root. Eu tentei isso e o comportamento não muda.

Instruções de instalação mais antigas para cuda/opencl dizem para baixar drivers diretamente do site da NVidia. Por favor, veja uma atualização sobre o resultado disso no final do post (foi catestrófico)

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 em meu sistema. No entanto, tenho /etc/OpenCL/vendors/nvidia.icdum que contém a linha libnvidia-opencl.so.1, sugerindo que meu problema é diferente.

Este erro foi observado no OSX, mas por motivos não relacionados. Mensagens de erro semelhantes para PyCUDA no OSX também parecem não estar relacionadas.

Este erro pode ocorrer sob acesso remoto, pois 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 desktop. Além disso, executei os comandos manuais sugeridos nesse tópico apenas para ter certeza, e eles são redundantes, pois as /deventradas relevantes já existem.

Algumas pessoas sugerem executar os exemplos algumas vezes, ou executá-los como sudo, para começar. Isso não parece ajudar.

Uma postagem descreveu como um cuInit failed: no deviceerro CUDA semelhante foi causado por não ter o usuário no videogrupo. Para verificar, executei usermod -a -G video $USER, mas não resolveu meu problema.

No passado, as atualizações de rotina interromperam o suporte CUDA. Não reservei tempo para explorar cada permutação de números de versão de pacotes, e é possível que o downgrade de alguns pacotes possa mudar a situação. Porém, sem mais intuição sobre a origem do problema, não vou investir tempo nisso, pois não sei se funcionará.

O resultado de pesquisa mais comum do Google para esse erro, que aparece quatro vezes em sites diferentes nas primeiras páginas dos resultados da pesquisa, é um tópico de e-mail curto e não resolvido na lista PyOpenCL. A verificação dos bits de permissão /dev/nvidia0e /dev/nvidiactlé sugerida. Na minha máquina, user/group/othertodos têm acesso de leitura e gravação a esses dispositivos, então não acho que essa seja a origem do problema.

Também tentei construir e instalar o PyOpenCL da fonte mais recente, em vez de usar a versão nos repositórios. Isso está falhando em uma fase anterior, o que me sugere que não está sendo construído corretamente.

Resumo

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 faltando alguma coisa e não tenho certeza do que mais fazer.

Outras atualizações

Tentei reinstalar a partir do deb cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb, baixado diretamente da NVidia, mas parece que não instala - nem consegui encontrar o comando deviceQuery. Tentei reinstalar a partir do runfile cuda_7.5.18_linux.run. O instalador notou que a configuração da minha máquina não era compatível. Continuei de qualquer maneira, como um último esforço. Na verdade, agora a configuração do X está completamente quebrada e a máquina não consegue inicializar na tela de login. Não consegui reparar isso.

informação relacionada