Instalando o CUDA no Ubuntu 10.10

Olá pessoal! Feliz 2011!

Nesse post, como havia prometido no twitter, vou contar como foi a minha experiência na instalação do CUDA no Ubuntu 10.10 Maverick Meerkat.

Quem me conhece sabe que não sou grande adepto de ferramentas proprietárias, entretanto, a ideia do CUDA é muito boa. Afinal, o que é isso?

O CUDA (Compute Unified Device Architecture) é uma arquitetura proprietária da NVIDIA para computação paralela que utiliza a grande potência de processamento das placas gráficas produzidas pela empresa. Além do poder de processamento, o CUDA usa os vários núcleos das placas de vídeo da NVIDIA para realizar as mais diversas tarefas. No sítio oficial são encontrados vários exemplos de utilização.

Para instalá-la, foi utilizada a documentação oficial à disposição no sítio do projeto (Getting_Started_Linux.pdf).

Vamos à instalação:

É de suma importância que a placa de vídeo do computador tenha núcleos dedicados a essa finalidade. O que a NVIDIA chama de cuda cores. Para verificar se sua placa possui esse suporte, você pode procurá-la no sítio do projeto CUDA. Caso não saiba qual a sua placa gráfica, pode utilizar o comando:

lspci | grep -i nvidia

Além disso, é necessário que o compilador esteja instalado. Para verificar, rode o seguinte comando no terminal:

gcc –version

Após a instalação do Ubuntu 10.10, eu baixei os arquivos no site oficial do CUDA. São eles:

  • NVIDIA-Linux-x86_64-260.19.29.run – Driver da minha placa de vídeo.
  • cudatoolkit_3.2.16_linux_64_ubuntu10.04.run – Ferramentas de desenvolvimento.
  • gpucomputingsdk_3.2.16_linux.run – SDK da NVIDIA para desenvolvimento em CUDA.

Em primeiro lugar, devemos instalar o programa gerenciador da placa de vídeo (driver). Entretanto, ele não pode ser utilizado quando a interface gráfica estiver rodando. Ou seja, é necessário parar o gerenciador gráfico. Para isso, use o comando:

sudo /etc/init.d/gdm stop

Ou, se preferir, reinicie o Ubuntu e inicie apenas o terminal.

Após isso, vá até a pasta onde armazenou os arquivos supracitados e dê permissão especial com o comando:

sudo chmod 0777 NVIDIA-Linux-x86_64-260.19.29.run

E depois rode a instalação como superusuário:

sudo sh NVIDIA-Linux-x86_64-260.19.29.run

Não apresentando erros, a placa de vídeo está instalada corretamente e você já pode reiniciar o modo gráfico para verificar as alterações no vídeo, ou pode continuar no terminal e concluir as outras instalações.

Agora vamos instalar o toolkit e a SDK. Eu aconselho veementemente que você utilize sempre as pastas padrão.

Para instalar o toolkit, você também deve utilizar o superusuário:

sudo sh cudatoolkit_3.2.16_linux_64_ubuntu10.04.run

Após isso, deve-se definir as variáveis de ambiente:

export PATH=/usr/local/cuda/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH – No caso de utilizar a distribuição de 32 bits.

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH – No caso de utilizar a distribuição de 64 bits, esse é o meu.

É importante que se adicione esses comando ao ~/.bashrc para que, ao reiniciar o computador, não seja necessário refazer esse processo. Use o editor de sua preferência (vi, gedit, nano) e cole esses comandos ao fim do arquivo.
sudo vi ~/.bashrc
A SDK deve ser instalada como usuário normal e na Pasta Pessoal (Home).
sh gpucomputingsdk_3.2.16_linux.run
Não altere a configuração padrão, que será:
$(HOME)/NVIDIA_GPU_Computing_SDK
Pronto!
Em tese, você já estará apto a rodar as aplicações que se encontram na pasta de exemplos da SDK. Entretanto não foi o que ocorreu comigo.
Depois que fiz isso tudo, fui até a pasta ~/NVIDIA_GPU_Computing_SDK/C e digitei make (é desnecessário dizer que estava no terminal, né! =D). Quatro aplicações foram compiladas, mas as outras não e nem consegui rodar as que haviam sido compiladas. Durante o processo de compilação me foi apresentado o erro:

make[1]: Entrando no diretório `/home/andre/NVIDIA_GPU_Computing_SDK/C/common’
make[1]: g++: Comando não encontrado
make[1]: ** [obj/x86_64/release/bank_checker.cpp.o] Erro 127
make[1]: Saindo do diretório `/home/andre/NVIDIA_GPU_Computing_SDK/C/common’
make: ** [lib/libcutil.so] Erro 2

O gcc estava instalado, mas, por via das dúvidas, resolvi instalar o pacote build-essential. Assim:

sudo apt-get install build-essential

O problema do g++ estava resolvido, entretanto ao compilar algumas aplicações, eram apresentados erros que diziam não ser possível encontrar determinadas bibliotecas, como essas:

/usr/bin/ld: cannot find -lGL
/usr/bin/ld: cannot find -lXi
/usr/bin/ld: cannot find -lXmu

Procurei pela internet quais eram os pacotes responsáveis por essas bibliotecas, uma vez que o problema não era mais a instalação do CUDA e sim do próprio Ubuntu. Assim, instalei os seguintes pacotes:

sudo apt-get install libglut3-dev libXi-dev libXmu-dev

Além disso, ainda tive que criar um link simbólico na pasta /usr/lib para que o compilador encontrasse a biblioteca responsável pelo openGL. Assim:

sudo ln -s libGL.so.260.19.29 libGL.so

Depois de tudo feito, consegui compilar todas as aplicações de exemplo, mas não estava conseguindo rodar. Apresentava o erro abaixo:

libcudart.so.2: wrong ELF class: ELFCLASS32″.

Essa foi fácil, percebi que a minha instalação do Ubuntu era de 64 bits, mas tinha exportado a biblioteca de 32 bits. Portanto, apenas adicionei a linha abaixo:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

Não foi excluída a linha de 32 bits para que eu pudesse manter a compatibilidade com a arquitetura.

Depois dessa novela toda, foi fácil rodar as aplicações. Como eu as compilei em modo release naveguei pelo terminal até ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release e rodei, por exemplo:

sh deviceQuery

Nessa pasta tem vários exemplos. A aplicação que emula líquido é extremamente interessante. Vale a pena dar uma conferida.

Enfim, pessoal. É um pouco trabalhoso, mas vale a pena. A tecnologia é muito interessante e dá pra aprender bastante com ela.

Espero que tenham gostado e deixem seus comentários.

Vida longa e próspera!


Referências Bibliográficas:

http://www.nvidia.com.br/object/cuda_home_new_br.html

http://www.nvidia.com/object/cuda_gpus.html

http://www.nvidia.com/object/cuda_get.html

Publicado em CUDA
18 comentários sobre “Instalando o CUDA no Ubuntu 10.10
  1. Lucas Campos disse:

    Muito obrigado pelo guia simples. Ainda n’ao testei, mas pretendo em breve. Eu ja’ instalei no windows, e foi complicado. Eu temia o Linux. Para compilar com linha de comando, voce usa so gcc nomedoarquivo.c ou precisa de mais alguma opcao?

  2. André Vasconcellos disse:

    Olá Lucas, muito obrigado pela visita. Ainda vou fazer um post sobre o Hello World do Cuda. Mas quando for compilar, você só precisa de usar o gcc nomedoarquivo.cu . A extensão é do cuda! Não é uma piada! =D

  3. Lucas Campos disse:

    Rapaz, depois de muita pesquisa, eu compilo sem problema no Visual Studio 2008, no windows. No entanto, quando eu uso o linux, nem o gcc nem o g++ aceitam meu arquivo. Quando uso nvcc, em geral ele compila, mas quando eu uso o CURAND, ele não compila nem a pau. Mais uma vez peço a sua ajuda. Você sabe resolver?

  4. André Vasconcellos disse:

    Opa, estive fora essa semana, portanto não consegui responder sua questão a tempo. Que bom que você descobriu e compartilhou conosco.

    Obrigado!

    []’s

  5. Mihira disse:

    Valeu mesmo cara,
    vc salvou minha vida
    rsrsrs

    • Lucas Campos disse:

      Na UFPE tem curso de CUDA?

      • André Vasconcellos disse:

        Cara, não sei se lá tem curso de CUDA, mas sei que tem projetos de pesquisa que estão trabalhando com ela. Portanto, imagino que, conversando com as pessoas certas, você consiga maiores informações a esse respeito. []’s

  6. Fábio disse:

    Amigo, essas digas e drives servem no ubuntu 10.10? Tenho ele instalado num vaio vcpf115m, placa grafica gforce 330m e estou com muitas dificuldades em instalar a placa gráfica. Grato e belo trabalho.

    • André Vasconcellos disse:

      Sim, a instalação foi feita no Ubuntu 10.10. Mas o texto não abrange a instalação da placa. Instalei a minha antes. Pelo que vi no site do fabricante, a sua placa está preparada pra rodar CUDA. Qual o problema na instalação, aparece algum erro? Onde você precisa de ajuda? []’s

  7. Fábio disse:

    Primeiro quando execulto o comando: sudo chmod 0777 NVIDIA-Linux-x86_64-260.19.29.run, ele fala que o arquivo não foi encontrado, vale lembrar que já baixei todos os arquivos que você comentou no seu post, e estão todos na pasta de download do ubuntu. Aguardo instruções, valeu pela força.

    • André Vasconcellos disse:

      Fábio, você entrou na pasta onde você baixou os arquivos? No tutorial eu disse o seguinte: “Após isso, vá até a pasta onde armazenou os arquivos supracitados e dê permissão especial com o comando:” – Isso quer dizer que você deve navegar pelo terminal até a pasta pra onde baixou os arquivos. No MEU caso, fui até a pasta DOWNLOADS do meu HOME, ou seja:
      cd /home/andre/Downloads
      Espero que funcione. []’s

  8. Fábio disse:

    André, consegui execultar os comandos, porém a instalação deu erro, ela diz isso aqui: ERROR: The Nouveau Kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver, and must be disable before proceeding. Please consult the NVIDIA driver README and your Linux distribution’s…
    O que eu faço agora?

    • André Vasconcellos disse:

      Fábio, o erro que está acontecendo não ocorreu comigo, parece que é erro no driver de vídeo. Ao que tudo indica, você está usando um driver de vídeo diferente do oficial da NVIDIA. Tente desinstalá-lo e instalar a versão oficial da NVIDIA. Caso não tenha, você consegue baixar o pacote no site oficial da NVIDIA. []’s

  9. Fábio disse:

    Esse que eu tentei instalar é do site da NVIDIA, baixei lá.

    • André Vasconcellos disse:

      Cara, é como eu te falei, eu não passei por este erro. Mas dá um confere no Google. Copiei a mensagem de erro e coloquei lá. O primeiro resultado me levou a uma possível solução, tente fazer isso e veja se dá certo. Caso positivo, poste aqui pra que nós tenhamos mais infos sobre isso. []’s

  10. Fábio disse:

    Bom dia André, tenho ótimas noticias, eu já possuia o driver Nvidia nativo rodando, desinstalei pelo synaptic e depois instalei o driver proprietário. Para desinstalar o drive nativo fui: sistema>administração>gerenciador de pacotes synaptic, clique em “procurar” e digite Nvidia, desmarquei o pacote nvidia que encontrei na pesquisa e depois instalei o que eu baixei, utilizando os comandos que você disponibilizou no seu blog. Só mais uma dúvida, a performance da minha nvidia fica melhor se eu instalar os outros aplicativos: cudatoolkit_3.2.16_linux_64_ubuntu10.04.run – Ferramentas de desenvolvimento.
    gpucomputingsdk_3.2.16_linux.run – SDK da NVIDIA para desenvolvimento em CUDA.

    Agradeço sua ajuda, abraço.

    • André Vasconcellos disse:

      Que bom que conseguiu resolver. Quanto à sua pergunta, a resposta é não! Esses pacotes são para poder compilar as aplicações CUDA. Não interferem em nada no uso da placa de vídeo. Fiz um post ontem explicando passo a passo como fazer para compilar uma aplicação CUDA. Se quiser tentar, vai ser bem interessante. []’s

Deixe uma resposta para André Vasconcellos Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*

*