01 – Instalando o SIESTA

Caixas com comandos ou edição de textos

Nesse tutorial há uma série de “caixas” com lista de comandos que são mostradas com o texto em verde. Cada linha de comando que deve ser digitada no terminal do linux é iniciada aqui com o símbolo $. Por exemplo:

$ cd $HOME

Para linhas de comandos que demandam permissões especiais de super-usuários, há uma indicação pelo símbolo inicial #.

Quando for necessário editar um arquivo de texto, a caixa com o texto para ser editado será indicado com texto em branco, e sem quaisquer símbolos iniciais como o $ ou #. Por exemplo:

FFLAGS = -O3 -fPIC -ftree-vectorize -fopenmp
LIBS = -L/usr/lib -lopenblas -fopenmp

A edição de texto pode ser realizada com qualquer software de edição de texto simples, como o VIM, EMACS, NANO, SUBLIME, ATOM, ou VSCODE. O software VIM é altamente recomendado para as edições de textos mostradas nesse tutorial.

Árvore de diretórios (opcional)

Para organizar a compilação e uso do SIESTA, nós recomendamos criar um diretório “siesta” no seu $HOME/Simulations usando:

$ cd $HOME
$ mkdir Simulations
$ cd Simulations
$ mkdir siesta

e três subdiretórios (programs, pseudos, IO):

$ cd siesta
$ mkdir programs
$ mkdir IO

Também é interessante copiar o diretório de arquivos de pseudopotenciais que serão utilizados nas simulações desse tutorial. Podemos copiar um repositório de pseudopotenciais do github com o comando:

$ git clone https://github.com/SeixasResearch/pseudos.git

Você pode usar diretórios diferentes para compilar e usar o SIESTA para simular os materiais. Apenas mude os diretórios de forma consistente com o tutorial.

Baixando o SIESTA

Baixe a versão mais recente do SIESTA no repositório do GitLab:

$ cd $HOME/Simulations/siesta/programs
$ git clone https://gitlab.com/siesta-project/siesta.git

Isso vai criar um diretório siesta em $HOME/siesta/programs. Nós vamos fazer duas instalações do SIESTA, uma mais simples com o sistema de paralelização OpenMP, e outra (mais rápida) com o sistema de paralelização OpenMPI para múltiplos nós.

Compilando SIESTA com OpenMP

No Ubuntu 18.04, baixe e instale as seguintes bibliotecas:

sudo apt-get install make gfortran libopenblas-dev libomp-dev

Renomeie e entre no diretório siesta-omp seguindo os comandos:

$ mv siesta siesta-omp
$ cd siesta-omp/Obj
$ bash ../Src/obj_setup.sh
$ cp gfortran.make arch.make

Edite o arquivo arch.make com um programa de edição de texto, como o VIM:

$ vim arch.make

Nesse arquivo, ajustes as seguintes variáveis:

FFLAGS = -O3 -fPIC -ftree-vectorize -fopenmp
LIBS = -L/usr/lib -lopenblas -fopenmp

e não se esqueça de salvar quando sair do arquivo de edição. No vim isso é feito com o comando :wq. Seja cuidadoso para não se perder nos comandos do vim.

Finalmente, faça a compilação com o comando make:

$ make -j4

para compilar usando 4 núcleos de processamento (4 cores). Substitua o “4” por o número de núcleos que você quer utilizar na compilação.

Essa compilação vai criar um arquivo executável siesta no diretório siesta-omp/Obj. Nós recomandamos criar um link simbólico (atalho) no diretório /usr/local/bin como superusuário do linux (sudo).

$ cd $HOME/Simulations/siesta/programs/siesta-omp/Obj/
$ sudo ln -s siesta /usr/local/bin/siesta-omp

Atenção! A criação desses links simbólicos dessa forma só funcionam no linux. Para MacOS e Ubuntu on Windows é preciso fazer algumas adaptações para encurtar o comando completo para execução do SIESTA.

Pronto! Agora você já pode executar o programa siesta a partir de qualquer diretório. Para executar o siesta com 4 núcleos de processamento, vamos usar o seguinte comando:

$ OMP_NUM_THREADS=4 siesta-omp input.fdf > job.out &

Compilando SIESTA com MPI

Nós também podemos instalar o SIESTA com outro tipo de paralelização. O OpenMPI é uma biblioteca para computação de alto desempenho que pode paralelizar em múltiplos nós (computadores), não apenas múltiplos núcleos.

sudo apt-get install make gfortran libopenblas-dev libfftw3-dev \
                       openmpi-common openmpi-bin libopenmpi-dev \
                       libblacs-mpi-dev libnetcdf-dev netcdf-bin \
                       libnetcdff-dev libscalapack-mpi-dev \
                       libblas-dev liblapack-dev

Crie uma nova instalação do SIESTA com

$ cd $HOME/Simulations/siesta/programs
$ git clone https://gitlab.com/siesta-project/siesta.git
$ mv siesta siesta-mpi
$ cd siesta-mpi/Obj

Para essa instalação com OpenMPI, é preciso de um arquivo arch.make apropriado para isso. Baixe um arquivo já modificado no repositório do github do nosso grupo de pesquisa: arch.make.openmpi. Compile o SIESTA com este arquivo arch.make.

$ bash ../Src/obj_setup.sh
$ wget https://raw.githubusercontent.com/SeixasResearch/siesta-tutorials/master/arch.make.openmpi
$ mv arch.make.openmpi arch.make
$ make -j4

Após a compilação, nós podemos criar um link simbólico no diretório /usr/local/bin:

$ sudo ln -s siesta /usr/local/bin/siesta-mpi

Para executar a tarefa (job) em paralelo com o opemmpi, em geral nós usamos o seguinte comando:

$ OMP_NUM_THREADS=1 mpirun -np 4 siesta-mpi input.fdf > job.out &

Próximo: 02 – Primeiras simulações com o SIESTA