Encontrei meia dúzia de postagens sobre isso em toda a web, mas nenhuma delas realmente responde à pergunta.
Quero configurar minha GPU nvidia para fazer apenas cálculos, não para conduzir a tela. Mas quando mudo para o uso da GPU Intel na configuração nvidia-prime, não consigo mais carregar o módulo nvidia.
modprobe: ERROR: could not insert 'nvidia_352': No such device
Sem o módulo, CUDA não funciona, obviamente.
Então, o que exatamente a nvidia-prime está fazendo que impossibilita o carregamento do módulo? Não está na lista negra. Não há arquivo xorg.conf, então como o sistema sabe usar a GPU Intel em vez da discreta?
Estou em um Dell 5510 Precision com o Ubuntu 14.04 instalado de fábrica e minha GPU é o Quadro M1000M.
Alguns sugerem o uso do zangão, mas isso não deve ser necessário para cargas de computação puras.
Além disso, aparentemente o zangão é capaz de carregar o módulo. Então, o que exatamente está fazendo?
Atualização: Então, por que sempre parece que encontro a resposta quando finalmente posto uma pergunta, depois de horas tentando descobrir. Isso é apenas uma resposta parcial, mas estou tentando algo.
Até agora, determinei que o prime faz pelo menos duas coisas:
- Desligue a GPU usando o bbswitch.
- Altera as alternativas para /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.
Usando o bbswitch para ligar novamente a GPU, agora consigo carregar o módulo NVIDIA.
Mas a questão ainda permanece: Qual é a melhor maneira de configurar o sistema para usar a placa NVIDIA apenas para cálculos?
Devo definir a nvidia-prime para usar a GPU Intel e tentar desvendar manualmente o que isso fez para o CUDA funcionar?
Como garantir que o sistema ainda use a GPU Intel para a tela?
Como eu simplesmente desabilitava o NVIDIA prime e configurava tudo manualmente?
Ou devo apenas ceder e usar o Bumblebee e optar por executar? Quais são as desvantagens disso, se houver?
Alguma recomendação?
fonte
Respostas:
No meu caso, descobri que a placa NVidia não estava realmente desligada e a única coisa que realmente precisava fazer para executar o código CUDA era:
no shell onde eu quero executá-lo (estou assumindo que alterar globalmente a configuração de alternativas quebraria o compiz, etc, etc ...)
Para chegar a esse ponto (em um Dell Optiplex 7010, com Ubuntu 14.04, CUDA 7.5 e GTX 980), acredito que as etapas foram:
Tudo parece estar funcionando bem até agora (a nvidia-smi vê o cartão, as amostras cuda são executadas, o theano usa o cartão, etc ...)
fonte
Acredito que encontrei pelo menos uma solução superficial para isso, conforme descrito na atualização do meu post original. Realmente, encontrei duas soluções, embora tenha certeza de que existem outras.
1 - Com o Prime no modo Intel, reative a placa NVIDIA via bbswitch , depois execute
modprobe nvidia
para carregar o módulo e criar os nós do dispositivo.2 - Use o Bumblebee optirun para iniciar uma sessão do bash, de onde você pode fazer todo o seu material CUDA.
Ambas as soluções permitem que você use os gráficos integrados para o seu monitor, enquanto usa a placa NVIDIA para cargas de computação. A solução optirun parece mais versátil, mas eu prefiro a primeira pelo seu minimalismo.
Espero que alguém com mais entendimento melhore esta resposta.
fonte
Eu uso a placa NVIDIA apenas para execuções CUDA e descubra esta abordagem:
O tempo todo eu uso o cartão intel e isso é confirmado por comando
lspci | grep -E "VGA|3D"
:Na linha correspondente da placa NVIDIA, você deve ver que
(rev ff)
ela está desligada.Para ligar o cartão e usá-lo para cálculos CUDA, use dois comandos a seguir:
Após esse
lspci | grep -E "VGA|3D"
relatório de comando :Observe sobre
(rev a2)
, não(rev ff)
na linha correspondente. Agora cartão pronto para computação.Após os cálculos, eu uso ações reversas:
E
lspci | grep -E "VGA|3D"
relatórios:fonte
Caso alguém ainda encontre problemas após seguir as etapas da resposta aceita, tente o seguinte:
Ele desativará completamente o bbswitch. A desvantagem é que você não poderá desligar a placa NVIDIA para economizar energia (o Xorg ainda usa gráficos integrados, desde que
prime-select intel
).fonte
Estou usando um 1070 ti com um thinkpad T420 em um egpu configurado para minerar criptografia enquanto trabalho. A GPU teoricamente se pagará após alguns meses dessa maneira.
Eu descobri que, com a nvidia 387, a exportação LD_LIBRARY_PATH = / usr / lib / nvidia-387 funcionava com o ethminer usando cuda.
No entanto, a única maneira de conseguir que o sistema continuasse funcionando após uma "informação de seleção principal" era se eu tivesse um segundo monitor conectado à placa quando fiz a seleção e efetuei o logoff. Caso contrário, eu receberia um erro "O sistema está executando no modo de gráficos baixos" ou uma tela em branco contínua. É claro que, quando eu faço logon executando gráficos intel, o monitor conectado à GPU não exibe nada, então eu tenho que desconectá-lo da GPU e conectá-lo novamente ao sistema (saída DVI dock) para executar a configuração do meu monitor de duelo .
Eu acredito que isso ocorre porque o gpu-manager detecta que o bbswitch não funciona e exclui a configuração do xorg.
Estou postando isso para mostrar uma solução alternativa para os poucos que podem estar em uma situação semelhante, mas também para ver se alguém tem uma idéia para impedir que isso aconteça, pois ter que mover esse cabo para cada reinicialização é um pouco complicado. inconveniência.
arquivo_de_log: /var/log/gpu-manager.log
last_boot_file: / var / lib / drivers-ubuntu-common / last_gfx_boot new_boot_file: / var / lib / drivers-ubuntu-common / last_gfx_boot não pode acessar / executar / arquivo udc-fglrx-was-loading Procurando módulos fglrx em / lib /modules/4.4.0-104-generic/updates/dkms Procurando por módulos nvidia em /lib/modules/4.4.0-104-generic/updates/dkms Encontrado módulo nvidia: nvidia_387_drm.ko A nvidia está carregada? sim A nvidia foi descarregada? não A nvidia está na lista negra? sim O fglrx está carregado? Não O fglrx foi descarregado? não O fglrx está na lista negra? não A intel está carregada? sim O radeon está carregado? não Radeon está na lista negra? não O amdgpu está carregado? não O amdgpu está na lista negra? não O nouveau está carregado? não O nouveau está na lista negra? sim O módulo do kernel do fglrx está disponível? Não O módulo nvidia kernel está disponível? ID do fornecedor / dispositivo: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" O boot é vga? ID do fornecedor / dispositivo: 10de: 1b82 BusID "PCI: conf Alternativa principal atual: (nula) Alternativa atual egl: /usr/lib/nvidia-387-prime/ld.so.conf A nvidia está ativada? não A nvidia egl está ativada? não O fglrx está ativado? não O mesa está ativado? não O mesa egl está ativado? no O pxpress está ativado? não O prime está ativado? sim O egl principal está ativado? sim A nvidia está disponível? sim A nvidia egl está disponível? Não O fglrx está disponível? Não O fglrx-core está disponível? não O mesa está disponível? sim O mesa egl está disponível? sim O pxpress está disponível? Não O prime está disponível? sim O egl principal está disponível? nenhum Intel IGP detectado Sistema híbrido Intel driver Nvidia versão 387.34 detectada / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" 1ª tentativa: bbswitch sem peculiaridades Carregando bbswitch com Parâmetros "load_state = -1 unload_state = 1" Parâmetros Error: can ' t abra / proc / acpi / bbswitch Removendo o xorg.conf. Caminho: /etc/X11/xorg.conf não pode acessar /usr/share/gpu-manager.d/hybrid-power-saving Não há necessidade de alterar o status atual do bbswitch
Se eu nano xorg.conf depois disso, ele está vazio. Estou postando isso depois de fazer o truque de troca de monitor, com a mineração em segundo plano e meu xorg.conf ainda está vazio. Portanto, meu palpite é que, por alguma razão, quando eu mantenho o monitor conectado à GPU no reinício do lightdm, não importa que meu xorg.conf seja excluído. Alguma ideia?
fonte