LaSCADo
  • Equipe
  • Eventos
  • Histórico
  • Financiamento
  • Política de uso
  • Projetos
  • Hardware
  • Softwares
  • Como acessar
  • Dicas
  • Como chegar

Compilação de softwares

Em ambientes científicos e de HPC, muitas vezes não temos liberdade total para instalar programas diretamente no sistema usando o gerenciador de pacotes (apt, dnf, etc.). É o caso dos equipamentos do nosso cluster. Outra situação que precisa de compilação, quando a versão disponível nos repositórios pode estar desatualizada ou sem certos recursos necessários para a sua pesquisa.

Nessas situações, a solução é compilar o programa a partir do código-fonte. Isso traz várias vantagens:

Autonomia do usuário Você pode instalar softwares no seu próprio diretório ~/home/usuario/.local ou em um caminho específico (/opt/meu_software) sem depender do administrador do sistema.

Customização Ao compilar, você decide quais recursos ativar ou desativar: suporte a bibliotecas específicas, otimizações para sua CPU, ativação de paralelismo (OpenMP) etc. Exemplo: compilar uma biblioteca matemática com suporte a instruções AVX pode dobrar a performance em processadores modernos.

Múltiplas versões Em HPC é comum precisar de várias versões do mesmo software. Um pesquisador pode usar GROMACS 2021, enquanto outro precisa do GROMACS 2023. Compilando em diretórios separados, você mantém todas as versões organizadas.

Reprodutibilidade científica Documentar como o software foi compilado (./configure com as opções utilizadas) garante que outro pesquisador possa reproduzir os resultados exatamente com as mesmas condições.

Otimização para o hardware disponível Clusters HPC podem ter nós com arquiteturas diferentes. Compilar localmente permite tirar proveito do hardware (instruções vetoriais, aceleração por GPU, bibliotecas otimizadas).

A ferramenta que transforma um código fonte em um programa é o compilador, e os compiladores são específicos para uma linguagem, por exemplo, compilador para C ou para Fortran. Mas podemos ter diferentes compiladores para mesma linguagem, como o open source gcc e o compilador C da Intel.

Etapas clássicas para uma compilação - ./configure → verifica dependências e prepara Makefile. - make → compila o programa. - make install → copia os binários compilados para o sistema.

Para exemplo vamos compilar um programa:

$ wget http://ftp.gnu.org/gnu/hello/hello-2.12.tar.gz
$ tar -xvf hello-2.12.tar.gz
$ cd hello-2.12/
$ ./configure --prefix=/home/bruno/local
$ make
$ make install

Algumas dicas importantes para compilação: Sempre rode ./configure –help antes de compilar. Entenda que cada opção ativa/desativa recursos. Antes de compilar, leia os arquivos README e INSTALL

Vamos instalar uma versão mais nova do editor de texto nano:

$ wget https://ftp.gnu.org/gnu/nano/nano-8.1.tar.xz
$ tar -xvf nano-8.1.tar.xz 
$ cd nano-8.1/
$ ./configure --prefix=/home/bruno/local
$ make -j4
$ make install
$ ~/local/bin/nano --version
 

LaSCADo - FT/UNICAMP/Limeira