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 update
$ 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 \
libscalapack-openmpi-dev libnetcdf-dev netcdf-bin \
libnetcdff-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 &