Se você deseja trabalhar com algoritmos de Machine Learning provavelmente você precisará usar de processamento paralelo para acelerar os resultados dos seus algoritmos. Muitos frameworks, como, por exemplo, o TensorFlow já possuem versões de certos algoritmos para executarem em GPU. E o primeiro passo para acelerar seus algoritmos com CUDA é preparar a infraestrutura do seu sistema operacional.
O sistema operacional mais usado para programar atualmente é o Linux. As distribuições Linux baseadas no Ubuntu tem se destacado quando o assunto é facilidade e suporte para preparar o ambiente de programação. Este tutorial pode ser aplicado em qualquer distribuição baseada no Ubuntu e até mesmo derivada do Red Hat, como CentOS ou Fedora, desde que sejam feitas algumas adaptações.
Este tutorial foi testado nas distribuições Ubuntu 16.04 e Linux Mint 18.2 Mate 64-bit.
Antes de qualquer passo para instalar o driver NVIDIA é necessário desabilitar o driver nouveau que vem por padrão em substituição ao driver proprietário da NVIDIA.
O primeiro passo é bloquear os módulos do driver nouveau:
1 2 3 4 5 6 7 |
$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off |
Agora vamos desabilitar o módulo no kernel:
1 |
$ sudo echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf |
Vamos reconstruir o kernel sem o módulo nouveau:
1 |
$ sudo update-initramfs -u |
Reinicie o sistema operacional.
Agora sim! Vamos instalar o driver NVIDIA. Para instalar o driver da NVIDIA são necessários diversos utilitários como compiladores para linguagem de programação C (GCC) e utilitários para compilação como o comando make. Em distribuições baseadas no Debian ou Ubuntu o pacote a ser instalado é o build-essential.
1 |
$ sudo apt install build-essential |
Faça download CUDA Toolkit no site oficial da NVIDIA.
Baixe a versão para Linux – Ubuntu 16.04 – runfile (local)
É necessário parar a execução da interface gráfica para instalação do toolkit:
1 |
$ sudo systemctl stop lightdm |
Agora execute o arquivo de instalação do CUDA Toolkit.
Para isso, vou passar como parâmetro uma opção importante para quem pretende usar o driver NVIDIA apenas para programar e não para a interface gráfica para evitar conflitos durante a programação em CUDA:
1 2 |
$ chmod +x cuda_9.0.176_384_linux.run $ sudo ./cuda_9.0.176_384_linux.run --no-opengl-libs |
Responda as perguntas do instalador da seguinte maneira:
- y para a instalação num ambiente de configuração não suportado
- y para instalação do driver NVIDIA
- n para não executar o nvidia-xconfig
- y para instalar o Cuda 9.0 Toolkit
- Pressione ENTER para deixar como localização padrão do Toolkit o diretório /usr/local/cuda-9.0
- y para instalar um link simbólico para /usr/local/cuda
- y para instalar os exemplos de código (samples) para o CUDA 9.0
- Escolha um diretório para armazenar os exemplos de código do CUDA e pressione ENTER
Agora devemos configurar as variáveis de ambiente para que possamos usar o CUDA mais eficientemente:
1 2 |
$ export PATH=/usr/local/cuda-9.0/bin:$PATH $ export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH |
Devemos guardar essas variáveis no arquivo .profile do usuário que programará em CUDA no sistema para que ao reiniciar o SO não seja necessário exportá-las novamente.
1 2 3 4 5 |
$ vim ~/.profile export PATH=/usr/local/cuda-9.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH |
As duas linhas “export” devem vir no final do arquivo. Execute o comando source para executar os comandos “export” definidos no arquivo .profile:
1 |
$ source ~/.profile |
Nas próximas inicializações do SO não será mais necessário executar o comando source.
Pronto!
Execute o comando nvidia-smi para ver as GPUs disponíveis no seu computador:
1 |
$ nvidia-smi |
Verifique a versão do compilador NVCC:
1 |
$ nvcc --version |
Até os próximos posts!