Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Estrutura de software High performance computing Octopus Resumo Referencias
Instalacao de pacote DFT
Fabio [email protected]
Curso de verao 2015 - IFGW/Unicamp
1/42
Estrutura de software High performance computing Octopus Resumo Referencias
1 Estrutura de software
2 High performance computing
3 Octopus
4 Resumo
2/42
Estrutura de software High performance computing Octopus Resumo Referencias
Itens basicos
Figura 1: Elementos basicos de software em C e seus derivados.
3/42
Estrutura de software High performance computing Octopus Resumo Referencias
Figura 2: Elementos basicos de software em C e seus derivados.
4/42
Estrutura de software High performance computing Octopus Resumo Referencias
Figura 3: Elementos basicos de software em FORTRAN e seusderivados.
5/42
Estrutura de software High performance computing Octopus Resumo Referencias
Figura 4: Elementos basicos de software em FORTRAN e seusderivados.
6/42
Estrutura de software High performance computing Octopus Resumo Referencias
Figura 5: Processo de compilacao.
7/42
Estrutura de software High performance computing Octopus Resumo Referencias
Figura 6: Cenario completo.
8/42
Estrutura de software High performance computing Octopus Resumo Referencias
Bibliotecas
Figura 7: Tipos de biblioteca.
9/42
Estrutura de software High performance computing Octopus Resumo Referencias
Figura 8: Biblioteca estatica.
10/42
Estrutura de software High performance computing Octopus Resumo Referencias
Figura 9: Biblioteca compartilhada.
11/42
Estrutura de software High performance computing Octopus Resumo Referencias
HPC
O que e High-Performance Computing (HPC)[3, 5, 7]:
Diversos computadores de uso dedicado;
Processos paralelos;
Alta densidade de processadores e memoria;
Interconexao de alta velocidade;
12/42
Estrutura de software High performance computing Octopus Resumo Referencias
HPC
Existem limites para construir apenas um computadorgrande;
Dessa forma e necessario unir diversos computadorespara executar os processos;
Essa uniao de diversos computadores (nodes) pode serfeita de diversas formas;
13/42
Estrutura de software High performance computing Octopus Resumo Referencias
HPC
Processo: Representado por um executavel que esta nocomputador com espaco de memoria exclusivo;
Figura 10: (a) Multiplos processos em um processador. (b)Quatro processos executando em 4 cores (c) Apenas umnucleo
14/42
Estrutura de software High performance computing Octopus Resumo Referencias
HPC
Thread: Linha de execucao concorrente dentro doprocesso com memoria compartilhada;
Figura 11: (a) Processos com uma thread. (b) Um processo comtres threads.
15/42
Estrutura de software High performance computing Octopus Resumo Referencias
Memoria compartilhada
Figura 12: Sistema de memoria compartilhada [3]
16/42
Estrutura de software High performance computing Octopus Resumo Referencias
Memoria distribuıda
Figura 13: Sistema de memoria compartilhada [3]
17/42
Estrutura de software High performance computing Octopus Resumo Referencias
Sistema hıbrido
Figura 14: Sistema hıbrido [3]
18/42
Estrutura de software High performance computing Octopus Resumo Referencias
Sistema heterogeneo
Figura 15: Sistema heterogeneo [3]
19/42
Estrutura de software High performance computing Octopus Resumo Referencias
Sistema de filas
Para controlar a utilizacao dos nodes torna-senecessario o sistema de filas;
Diversas filas para cada cluster sao feitas limitando ouso de nodes e cores;
Dessa foram todos tem a chance de utilizar asmaquinas.
20/42
Estrutura de software High performance computing Octopus Resumo Referencias
Sistema de filas
#!/bin/csh
#PBS -m abe ### envia email no enfileiramento, no inıcio e no final do processo
#PBS -N par32a ### Nome do processo
#PBS -e par32a.err ### Arquivo de saıda de erro
#PBS -o par32a.out ### Arquivo de saıda padrao
#PBS -q par32 ### Inserir o processo da fila par32
#PBS -l nodes=2:ppn=4 ### Requisitando 2 nodes e 4 processos
cd diretorio-aonde-esta-o-comando-executavel
mpirun -n 8 ./comando-executavel ### executa com 8 processos
21/42
Estrutura de software High performance computing Octopus Resumo Referencias
Octopus
Octopus e um pacote que utiliza pseudo-potenciais,destinado a simulacao da dinamica de eletron-ıon emsistemas finitos tridimensionais sujeitos a camposeletromagneticos dependentes do tempo;
22/42
Estrutura de software High performance computing Octopus Resumo Referencias
1 CalculationMode = gs % fazer a simulacao a
partir do groundstate
2 Units = eV_Angstrom % unidades utilizadas
34 Radius = 3.5 % tamanho da caixa de simulacao
5 Spacing = 0.25 % cespaamento da malha
67 CH = 1.2 % constante
8 %Coordinates
9 "C" | 0 | 0 | 0
10 "H" | CH/sqrt (3) | CH/sqrt (3) | CH/sqrt (3)
11 "H" | -CH/sqrt (3) |-CH/sqrt (3) | CH/sqrt (3)
12 "H" | CH/sqrt (3) |-CH/sqrt (3) | -CH/sqrt (3)
13 "H" | -CH/sqrt (3) | CH/sqrt (3) | -CH/sqrt (3)
14 %
23/42
Estrutura de software High performance computing Octopus Resumo Referencias
Dicas antes de comecar:
Organizar e apontar todas as bibliotecas utilizadas;
Compilar tudo com a mesma serie de compiladores;
Manter documentacao de como foi feito;
Sempre fazer as verificacoes no final dos processos.
24/42
Estrutura de software High performance computing Octopus Resumo Referencias
Como instalar o Octopus ?
1 $ wget http://www.tddft.org/programs/octopus/
download /4.1.2
2 $ gzip -cd octopus -4.1.2. tar.gz
3 $ cd octopus -4.1.2
4 $ ./ configure
5 $ make
6 $ make install
25/42
Estrutura de software High performance computing Octopus Resumo Referencias
Base Ubuntu 14.04:
apt-get update; apt-get install build-essential vimwget gfortran-4.4 gcc-4.4 openmpi-bin libopenmpi-devautoconf
build-essential, vim wget autoconf - ferramentas paracompilacao;
openmpi - Implementacao do MPI que permite ossistemas hıbridos e distribuıdos;
gfortran e gcc - compiladores na versao 4.4.
26/42
Estrutura de software High performance computing Octopus Resumo Referencias
Bibliotecas necessarias:
BLAS - Biblioteca para algebra linear;
LAPACK - Biblioteca para algebra linear;
GSL - GNU Scientific Library ;
FFTW 3 - Transformada de Fourier;
LibXC - Exchange-correlation functionals fordensity-functional theory ;
pfft - Biblioteca paralelizada FFT;
export OMPI FC=gfortran-4.4;
export OMPI CC=gcc-4.4;
27/42
Estrutura de software High performance computing Octopus Resumo Referencias
BLAS
1 $ wget http://www.netlib.org/blas/blas.tgz
2 $ tar -xf blas.tgz
3 $ cd BLAS
4 $vim make.inc
5 FORTRAN = mpif90.openmpi
6 OPTS = -O3
7 DRVOPTS = $(OPTS)
8 NOOPT =
9 LOADER = mpif90.openmpi
10 LOADOPTS =
11 $make
12 $mkdir lib
13 $ cp blas_LINUX.a lib/liblas.a
14 /home/fabio/octopus/BLAS/lib/liblas.a
28/42
Estrutura de software High performance computing Octopus Resumo Referencias
LAPACK
1 $ wget http://www.netlib.org/lapack/lapack.tgz
2 $ tar -xf lapack.tgz
3 $ cd lapack -3.5.0
4 $ cp make.inc.example make.inc
5 $vim make.inc
6 FORTRAN = mpif90.openmpi
7 OPTS = -O2 -frecursive
8 DRVOPTS = $(OPTS)
9 NOOPT = -O0 -frecursive
10 LOADER = mpif90.openmpi
11 LOADOPTS =
12 $ make lib
13 $ cp liblapack.a lib/liblapack.a
14 /home/fabio/octopus/lapack/lapack -3.5.0/ lib/
liblapack.a
29/42
Estrutura de software High performance computing Octopus Resumo Referencias
GSL
1 $ wget ftp://ftp.gnu.org/gnu/gsl/gsl -1.16. tar.gz
2 $ tar -xf gsl -1.16. tar.gz
3 $ cd gsl -1.16
4 $ mkdir install
5 $ ./ configure CC="mpicc.openmpi" --prefix =/home/
fabio/octopus/gsl/gsl -1.16/ install --disable -
shared --enable -static
6 $ make
7 $ make install
8 /home/fabio/octopus/gsl/gsl -1.16/ install
30/42
Estrutura de software High performance computing Octopus Resumo Referencias
libxc
1 $ wget http://www.tddft.org/programs/octopus/
down.php?file=libxc/libxc -2.1.1. tar.gz
2 $ tar -xvzf libxc -2.1.0. tar.gz
3 $ cd libxc -2.1.0
4 $ mkdir install
5 $ ./ configure --prefix =/home/fabio/octopus/libxc
/libxc -2.1.1/ install CC="mpicc.openmpi"
CFLAGS="-O3 -lm" FC="mpif90.openmpi" FCFLAGS=
"-O3" --disable -shared
6 $ make
7 $ make install
8 /home/fabio/octopus/libxc/libxc -2.2.0/ install
31/42
Estrutura de software High performance computing Octopus Resumo Referencias
FFT e pfft
1 $ wget https://www -user.tu -chemnitz.de/~mpip/
software/install_fftw -3.3.4 _gcc.sh
2 $ chmod +x install_fftw -3.3.4 _gcc.sh
3 $ vim install_fftw -3.3.4 _gcc.sh
4 myprefix =/home/fabio/octopus/pfft/fftw/install
5 export OMPI_FC=gfortran -4.4
6 export OMPI_CC=gcc -4.4
7 OMPI_FC=gfortran -4.4
8 OMPI_CC=gcc -4.4
910 $ ./ install_fftw -3.3.4 _gcc.sh
32/42
Estrutura de software High performance computing Octopus Resumo Referencias
FFT e pfft
1 $ wget https://www -user.tu -chemnitz.de/~mpip/
software/pfft -1.0.8 - alpha.tar.gz
2 $ tar -xf pfft -1.0.8 - alpha.tar.gz
3 $ cd pfft -1.0.8 - alpha
4 ./ configure --prefix =/home/fabio/octopus/pfft/
pfft -1.0.8 - alpha/install --with -fftw3=/home/
fabio/octopus/pfft/fftw/install CC="mpicc.
openmpi" CFLAGS="-O3 -lm" FC="mpif90.openmpi"
FCFLAGS="-O3" F77=mpif90.openmpi MPICC=
mpicc.openmpi
5 $ make
6 $ make install
33/42
Estrutura de software High performance computing Octopus Resumo Referencias
octopus
1 $ wget http://www.tddft.org/programs/octopus/
down.php?file =4.1.2/ octopus -4.1.2. tar.gz
2 $ mkdir octopus
3 $ tar -xf octopus -4.1.2. tar.gz
4 $ cd octopus/octopus -4.1.2
5 $ mkdir install
34/42
Estrutura de software High performance computing Octopus Resumo Referencias
octopus
1 CPP=/usr/bin/cpp -4.4 ./ configure --prefix =/home/
fabio/octopus/octopus/octopus -4.1.2/ install
CC="mpicc.openmpi"
23 CFLAGS="-O3 -lm"
45 FC="mpif90.openmpi"
67 FCFLAGS="-O3 -I /home/fabio/octopus/pfft/fftw/
install/include -L /home/fabio/octopus/pfft/
fftw/install/lib"
89 --with -gsl -prefix="/home/fabio/octopus/gsl/gsl
-1.16/ install"
1011 --with -libxc -prefix="/home/fabio/octopus/libxc/
libxc -2.1.1/ install"
35/42
Estrutura de software High performance computing Octopus Resumo Referencias
octopus
1 --with -fft -lib="/home/fabio/octopus/pfft/fftw/
install/lib/libfftw3.a"
2 --with -blas="/home/fabio/octopus/BLAS/lib/liblas
.a"
34 --with -lapack="/home/fabio/octopus/lapack/lapack
-3.5.0/ lib/liblapack.a"
56 --enable -mpi --with -pfft
78 --with -pfft -prefix =/home/fabio/octopus/pfft/pfft
-1.0.8 - alpha/install
36/42
Estrutura de software High performance computing Octopus Resumo Referencias
octopus
1 $ make
2 $ make check
3 $ make install
4 /home/fabio/octopus/octopus/octopus -4.1.2/
install
37/42
Estrutura de software High performance computing Octopus Resumo Referencias
Existem outras bibliotecas uteis e em alguns casosexperimentais:
opencl;blacs;scalapack.
38/42
Estrutura de software High performance computing Octopus Resumo Referencias
Resumo
Organizar e apontar todas as bibliotecas utilizadas;
Compilar tudo com a mesma serie de compiladores;
Manter documentacao de como foi feito;
39/42
Estrutura de software High performance computing Octopus Resumo Referencias
Resumo
Sempre fazer as verificacoes no final dos processos.
Deixar todas as definicoes o mais explicito possıvel;
Verificar o arquivo config.log, pois possui grandequantidade de informacoes;
40/42
Estrutura de software High performance computing Octopus Resumo Referencias
Referencias I
[1] A.V. Aho. Compilers: Principles, Techniques, & Tools.Addison-Wesley series in computer science.Pearson/Addison Wesley, 2007. isbn: 9780321486813.
[2] Xavier Andrade et al. “Time-dependentdensity-functional theory in massively parallelcomputer architectures: the octopus project”. Em:Journal of Physics: Condensed Matter 24.23 (2012),p. 233202. url: http://stacks.iop.org/0953-8984/24/i=23/a=233202.
[3] G. Hager e G. Wellein. Introduction to HighPerformance Computing for Scientists and Engineers.Chapman & Hall/CRC Computational Science. Taylor& Francis, 2010. isbn: 9781439811924.
41/42
Estrutura de software High performance computing Octopus Resumo Referencias
Referencias II
[4] M. Tim Jones. Anatomy of Linux dynamic libraries.2008. url:http://www.ibm.com/developerworks/library/l-
dynamic-libraries/.
[5] J.M. May. Parallel I/O for High PerformanceComputing. Morgan Kaufmann Publishers, 2001. isbn:9781558606647.
[6] octopus. url: http://www.tddft.org/.
[7] J. Sanders e E. Kandrot. CUDA by Example: AnIntroduction to General-Purpose GPU Programming.Pearson Education, 2010. isbn: 9780132180139.
42/42