Numba para acelerar aplicações científicas feitas em Python

Numba para acelerar aplicações científicas feitas em Python

O Numba é um compilador para funções numéricas e array em Python para acelerar aplicações feitas nesta linguagem de programação. Este compilador permite paralelizar trechos de código em Python usando apenas “decorators” ou anotações. Segundo a documentação oficial, o Numba pode alcançar desempenho semelhante a C/C++ e Fortran. Ele gera código tanto para CPU quanto para GPU. Além disso, possui integração com APIs científicas do Python como o numpy. A GPU tem que ter CUDA Capability igual ou superior a 2.0. Em relação a GPU, o Numba ainda não possui suporte a paralelismo dinâmico e nem memória de textura.

http://numba.pydata.org/numba-doc/latest/cuda/index.html

Instalação do Cuda 9 em distribuições Linux baseadas no Ubuntu

Instalação do Cuda 9 em distribuições Linux baseadas no Ubuntu

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:

Agora vamos desabilitar o módulo no kernel:

Vamos reconstruir o kernel sem o módulo nouveau:

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.

Faça download CUDA Toolkit no site oficial da NVIDIA.

Baixe a versão para LinuxUbuntu 16.04runfile (local)

É necessário parar a execução da interface gráfica para instalação do toolkit:

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:

Responda as perguntas do instalador da seguinte maneira:

  1. y para a instalação num ambiente de configuração não suportado
  2. y para instalação do driver NVIDIA
  3. n para não executar o nvidia-xconfig
  4. y para instalar o Cuda 9.0 Toolkit
  5. Pressione ENTER para deixar como localização padrão do Toolkit o diretório /usr/local/cuda-9.0
  6. y para instalar um link simbólico para /usr/local/cuda
  7. y para instalar os exemplos de código (samples) para o CUDA 9.0
  8. 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:

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.

As duas linhas “export” devem vir no final do arquivo. Execute o comando source para executar os comandos “export” definidos no arquivo .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:

Verifique a versão do compilador NVCC:

Até os próximos posts!