Como posso obter o nVidia CUDA ou o OpenCL funcionando em um laptop com placa discreta da nVidia / Intel Integrated Graphics?

25

Histórico: Eu sou um artista 3D (como hobby) e recentemente comecei a usar o Ubuntu 12.04 LTS como um dual-boot com o Windows 7. Ele está rodando no meu relativamente novo laptop Toshiba de 64-bit com uma nVidia GeForce GT GPU 540M (placa gráfica). Ele também tem, no entanto, Intel Integrated Graphics (que eu suspeito que o Ubuntu esteja usando).

Então, quando eu renderizo minhas cenas em 3D para imagens no Windows, eu posso escolher entre usar minha CPU ou minha GPU da nVidia (mais rápido). A partir do aplicativo 3D, posso configurar a GPU para usar CUDA ou OpenCL. No Ubuntu, não há opção de GPU.

Depois de fazer (demais?) pesquisas sobre os problemas com o Linux e a tecnologia nVidia Optimus, estou um pouco mais esclarecido, mas muito mais confuso.

Eu não me importo nem um pouco com a tecnologia Optimus, já que a duração da bateria não é de forma alguma um problema para mim.

Eis a minha pergunta: O que posso fazer para usar programas que utilizam CUDA (como o Blender) na minha GPU da nVidia no Ubuntu? Vou precisar de drivers nVidia? (Eu ouvi dizer que eles não funcionam bem com configurações do Optimus no Linux.) Existe pelo menos uma maneira de usar o OpenCL na minha GPU no Ubuntu?

    
por Peter Cassetta 04.05.2012 / 17:22

4 respostas

13

Aqui está a resposta completa (com base em Alex Falappa e Respostas de Lekensteyn ):

É realmente possível obter GPUs da nVidia Optimus para executar o CUDA no Ubuntu.

O zangão não é necessário para CUDA. (mais sobre Bumblebee : É um NVIDIA GeForce com tecnologia Optimus suportada pelo Ubuntu?

No entanto, quando você precisa mostrar exemplos gráficos usando o OpenGL, você faz precisa de algo como o Bumblebee para sistemas Optimus, caso contrário você não vê nada em seu monitor ou recebe o erro:

ERROR: Support for necessary OpenGL extensions missing. 

Se você precisar usar um programa com muitos gráficos, como o Blender, o Bumblebee é um bom caminho no momento.

Pule para Instalando o CUDA se você não quiser instalar o Bumblebee (ou seja, se você não precisa do OpenGL).
Caso contrário, continue lendo.

Instalando o Bumblebee

Siga as instruções em Como funcionam os laptops com o Nvidia Optimus?

Atualmente são atualizados por um desenvolvedor da Bumblebee.

Depois de instalar o Bumblebee e reiniciá-lo, você poderá escolher a placa gráfica a ser usada ao iniciar programas usando o programa optirun .
Por exemplo:

optirun blender

Para testar rapidamente se tudo funciona corretamente, use:

optirun glxspheres

Você verá um programa com esferas giratórias coloridas se tudo estiver funcionando corretamente.

Verifique se a string do fornecedor GL no terminal contém a palavra nvidia .
Se você executar apenas glxspheres , verá a string do fornecedor conter a placa Intel.

Ao executar um programa CUDA, você precisa instalar o kit de ferramentas CUDA e um driver nvidia. Se você pretende compilar programas, também precisa do SDK. Os instaladores podem ser encontrados no link , por favor leia as instruções abaixo antes de abrir o seu laptop Optimus.

Instalando o CUDA

Driver

Eu recomendo instalar o driver nvidia do gerenciador de pacotes do Ubuntu. Se você instalar o Bumblebee, não precisa se preocupar com o driver. Caso contrário, após a instalação, desative as bibliotecas nvidia conforme descrito no link . Se você não o fizer, perderá a aceleração 3D e, possivelmente, ficará preso em uma baixa resolução.

Kit de ferramentas

Basicamente você tem que baixar o instalador, torná-lo executável e executá-lo.  - Faça o download do instalador. A partir de 9 de janeiro de 2013, 5.0.35 é o driver mais recente. Como eu tenho um sistema operacional de 64 bits, eu uso o pacote do Ubuntu 11.10 de 64 bits (embora eu esteja executando 12.10)  - Torne-o executável e permita a instalação em /usr/local/cuda :

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Quando a mensagem de instalação ocorrer perguntando onde instalar o CUDA, pressione Enter para aceitar o padrão /usr/local/cuda :

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Após a instalação, ele imprimirá algumas mensagens que sugerem colocar o diretório da biblioteca cuda em seu caminho de pesquisa da biblioteca:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Você pode pular esta etapa, se quiser, mas terá que definir LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH mais tarde ao executar um programa.

SDK

Se você quiser compilar aplicativos CUDA, poderá instalar o SDK de maneira semelhante à descrita acima. Faça o download, torne-o executável e execute-o (não como root, por exemplo, sem sudo !).

Usando CUDA

CUDA não precisa de um servidor X orientado a nvidia para funcionar. Nesse caso, você pode executar seu programa de teste aleatório como:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH algumComputallyIntensiveProgram

Se você não adicionou CUDA ao caminho da sua biblioteca, precisará:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH algumComputallyIntensiveProgram

(você pode remover os caminhos de 32 bits se o seu programa for de 64 bits).

Se o programa CUDA tiver algo para exibir usando o OpenGL, você terá que usar o optirun:

 optirun blender

Ou, se você não tiver o CUDA adicionado ao seu caminho padrão:

  

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH liquidificador optirun

Instalando um Blender Build

(Com Kernels CUDA pré-compilados)

Quando você executa optirun blender , você pode receber uma mensagem do Blender dizendo que a compilação do kernel CUDA falhou, e uma mensagem no terminal similar à seguinte:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Se você quiser usar o recurso de renderização da GPU do Blender, você pode precisar de uma compilação do Blender com kernels CUDA pré-compilados. Os builds do Blender.org todos têm kernels pré-compilados; o ppa: cheleb / blender-svn constrói ( mais informações nesta questão ) não.

Para instalar uma compilação oficial do Blender, basta seguir as instruções descritas em esta resposta .

Se você instalou o Blender em /usr/lib/blender , então poderá executar o Blender a partir do terminal e usar a renderização da GPU com:

 optirun '/usr/lib/blender/blender'
    
por Peter Cassetta 13.04.2017 / 14:24
25

Acabei de fazer algumas experiências e posso confirmar as declarações de Eric Appleman de que o Bumblebee não é necessário para o CUDA. (mais sobre Bumblebee : É um NVIDIA GeForce com tecnologia Optimus suportada pelo Ubuntu?

No entanto, quando você precisa mostrar exemplos gráficos usando o OpenGL, você faz precisa de algo como o Bumblebee para sistemas Optimus, caso contrário você não vê nada em seu monitor ou recebe o erro:

ERROR: Support for necessary OpenGL extensions missing.

Ao executar um programa CUDA, você precisa instalar o kit de ferramentas CUDA e um driver nvidia. Se você pretende compilar programas, também precisa do SDK. Os instaladores podem ser encontrados no link , por favor leia as instruções abaixo antes de abrir o seu laptop Optimus.

Instalando o CUDA

Driver

Eu recomendo instalar o driver nvidia do gerenciador de pacotes do Ubuntu. Se você instalar o Bumblebee, não precisa se preocupar com o driver. Caso contrário, após a instalação, desative as bibliotecas nvidia conforme descrito no link . Se você não fizer isso, você perderá a aceleração 3D e, possivelmente, ficará preso em uma baixa resolução.

Kit de ferramentas

Basicamente você tem que baixar o instalador, torná-lo executável e executá-lo.  - Faça o download do instalador. No momento desta publicação, 4.2.9 é o driver mais recente. Como eu tenho um sistema operacional de 64 bits, eu uso o pacote Ubuntu de 64 bits 11.04 (embora eu esteja executando 12.04)  - Torne-o executável e permita a instalação em /usr/local/cuda :

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Quando a mensagem de instalação ocorrer perguntando onde instalar o CUDA, pressione Enter para aceitar o padrão /usr/local/cuda :

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Após a instalação, ele imprimirá algumas mensagens que sugerem colocar o diretório da biblioteca cuda em seu caminho de pesquisa da biblioteca:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Você pode pular esta etapa se quiser, mas depois deve definir LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH quando executar um programa.

SDK

Se você quiser compilar aplicativos CUDA, poderá instalar o SDK de maneira semelhante à descrita acima. Faça o download, torne-o executável e execute-o (não como root, por exemplo, sem sudo !). Ao compilar partes dele, eu tive que fazer algumas alterações no NVIDIA_GPU_Computing_SDK/C/common/common.mk :

  • depois da linha 189, OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu , add:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • depois da linha 271, troque ${RENDERCHECKGLLIB} por ${OPENGLLIB} para que pareça:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • mais algumas linhas (5), faça o mesmo, mas remova -lcuda também.
  • mais algumas linhas (7), faça o mesmo que você fez na linha 271.

Usando CUDA

CUDA não precisa de um servidor X orientado a nvidia para funcionar. Nesse caso, você pode executar seu programa de teste aleatório como:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH algumComputallyIntensiveProgram

Se você não adicionou CUDA ao caminho da sua biblioteca, precisará:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH algumComputallyIntensiveProgram

(você pode remover os caminhos de 32 bits se o seu programa for de 64 bits).

Se o programa CUDA tiver algo para exibir usando o OpenGL, você terá que usar o optirun:

 optirun blender

Ou, se você não tiver o CUDA adicionado ao seu caminho padrão:

  

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH liquidificador optirun

    
por Lekensteyn 08.05.2012 / 16:49
2

O suporte a gráficos híbridos (geralmente gráficos integrados da Intel e gráficos discretos da Nvidia) no Linux é atualmente um pouco problemático. Algo está se movendo lentamente no campo do servidor X, mas não prenda a respiração.

Como você adivinhou, o Bumblebee é atualmente um bom caminho a seguir.

Comprei recentemente um laptop Asus N55 com gráficos Intel / Nvidia e consegui fazer com que o renderizador Blender Cycles usasse o CUDA.

Quando instalei o Ubuntu 12.04, usei os gráficos integrados por padrão através do driver de gráficos da Intel. O driver de gráficos do noveau não deve ser instalado.

Então eu abri um terminal e fiz:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

Depois disso eu fiz (conforme recomendado pelas instruções de instalação):

sudo usermod -a -G bumblebee $USER

Então eu reiniciei.

Para escolher o driver a ser usado ao iniciar programas, use o programa optirun, por exemplo:

optirun blender

Para testar se todos os trabalhos funcionam corretamente:

optirun glxspheres

E verifique se a string do fornecedor GL contém a palavra Nvidia. Se você correr, em vez disso:

glxspheres

A string do fornecedor deve conter a palavra Intel

    
por Alex Falappa 08.05.2012 / 09:45
1

Acho que para executar todos os exemplos de CUDA, usando o Bumblebee, você precisa instalar os drivers 295.40 de aqui e durante a instalação escolha não sobrescrever o config x11 .

Então você tem que usar o mesmo driver para compilar os exemplos e rodar o programa.

    
por olmer 28.08.2012 / 16:28