View
11
Download
0
Category
Preview:
Citation preview
Ferramentas de Programação Paralelapara Solução de Equações
Prof. Dr. Eliandro R. Cirilo
Universidade Estadual de Londrina - UELCentro de Ciências Exatas - CCEDepartamento de Matemática
18 de dezembro de 2018
1 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
2 / 68
Problemáticas: Um simples cálculo de área
X = [0 : 20π]
∆X = 0.1; 0.001; 0.00001; 0.00000000001 ⇒ ↑ T.C.11Tempo Computacional
3 / 68
Problemáticas: Multiplicação Matricial
a11 a12 a13a21 a22 a23a31 a32 a33a41 a42 a43
· b11 b12 b13 b14 b15
b21 b22 b23 b24 b25b31 b32 b33 b34 b35
=
c11 c12 c13 c14 c15c21 c22 c23 c24 c25c31 c32 c33 c34 c35c41 c42 c43 c44 c45
⇔ 20 elementos calculados
A40×30 · B30×50 = C40×50
⇔ 2.000 elementos calculados
A40000×30000 · B30000×50000 = C40000×50000
⇔ 2.000.000.000 elementos calculados ↑T .C .2
2Tempo Computacional4 / 68
Problemáticas: Equações de Navier-Stokes ≈ 8horas
∂
∂t(ρu) +
∂
∂x(ρuu) +
∂
∂y(ρuv) = −∂p
∂x+ µ
(∂2u
∂x2+∂2u
∂y2
)∂
∂t(ρv) +
∂
∂x(ρuv) +
∂
∂y(ρvv) = −∂p
∂y+ µ
(∂2v
∂x2+∂2v
∂y2
)∂u
∂x+∂v
∂y= 0
Luruaco
5 / 68
Problemáticas: Equilíbrio em Mod. Biológico ≈ 15dias
τ∂2S
∂t2+
[1− τ dF (S)
dS
]∂S
∂t= D
∂2S
∂x2+ F (S) (0, tend ]× (0, L)
S (0, x) = SI ;∂S (0, x)
∂t= 0 (0, L)
S (t, 0) = S (t, L) = 0 [0, tend ]∀ (t, x) ∈ (0, tend ]× (0, L) ;S (t, x) < 0→ S (t, x) = 0
6 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
7 / 68
Introdução: Conceitos básicos
Basicamente, existem as programações: SEQUENCIAIS ePARALELAS;
PROGRAMAÇÃO SEQUENCIAL é aquela que é compilada eexecutada para um único processador;
PROGRAMAÇÃO PARALELA é compilada e executada para mais deum processador;
PROCESSO é uma estrutura computacional para a execução de umprograma;
Quando se executa um código sequencial dizemos que existe umPROCESSO em execução, no caso paralelo existem PROCESSOS emexecução;
8 / 68
Introdução: Conceitos básicos
Quanto mais processadores se tem em uma máquina, mais processospodem ser executados, ao mesmo tempo, a partir de um códigoparalelo;
Atualmente, em um computador é possível ter mais de umprocessador;
Vários computadores podem ser interligados (formando umCLUSTER) para executar um código paralelo;
A programação paralela é vantajosa quando se tem um problema degrande porte para se resolver;
A programação paralela não é eciente em problemas de pequenoporte;
9 / 68
Introdução: Necessidades para o Paralelismo
Construído essencialmente pelo programador;
Podem existir problemas que não sejam paralelizáveis;
Decomposição das técnicas matemáticas de cálculos, ou dos dados ouainda do domínio;
Balanceamento entre os processadores;
Comunicação entre os processos;
Arquitetura de memória no computador (COMPARTILHADA /DISTRIBUÍDA)
10 / 68
Introdução: Memória Compartilhada
Os processos no código paralelo COMPARTILHAM uma unidade dememória;
Um processo, por vez, pode acessar um endereço de memóriacompartilhada (implementação OpenMP);
Cuidados devem ser tomados com relação a SINCRONIZAÇÃO;
11 / 68
Introdução: Memória Distribuída
Os processos no código paralelo possuem a sua própria unidade dememória;
As informações necessárias são comunicadas entre os processos viaprogramação no código paralelo (implementações: PVM, Linda, MPI);
Cuidados devem ser tomados com relação a SINCRONIZAÇÃO;
12 / 68
Introdução: Conceito de Thread
é uma forma de um processo dividir a si mesmo em duas ou maistarefas que podem ser executadas concorrentemente;
anteriormente cada processo tinha um único uxo de execução (o quedene uma Thread);
atualmente se tem novas unidades de uxo de execução, assimpode-se ter múltiplos uxos de execução (múltiplas Threads) nummesmo processo;
múltiplas Threads executam concorrentemente em um processo;
explorada pela interface OpenMP;
13 / 68
Introdução: Conceito de Message-Passing
vários processos são executados para realizar uma tarefaconcorrentemente;
os processos se comunicam via envio e recebimento de mensagens;
o conjunto de diferentes operações de comunicação resulta aimplementação Message-Passing entre processos;
explorada pela interface MPI;
14 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
15 / 68
Problemas de Interesse: Problema 1
Considere as matrizes de Hilbert (Hn) denidas como:
Hn = (hij) ∈ Rn×n, 1 ≤ i , j ≤ n
tal que hij =1
i + j − 1.
Com base no método clássico de matriz inversa A−1 =1
detA(adjA) -
José L. Boldrini ... [et al.], 3 ed., página 76 - construa um códigosequencial para o cálculo numérico em gfortran de H−11 , H−12 , H−13 ,H−110 , H
−1100 e H−11000. Disserte sobre os resultados encontrados.
16 / 68
Problemas de Interesse: Problema 2
Considere a área limitada por:f (x) = sin (x) + 2
y = 0x = 0x = 20π.
Via o método dos retângulos, considerando ∆x nos casos 0.1; 0.001;0.00001; 0.00000000001, construa um código sequencial para ocálculo numérico em gfortran.Para avaliar o nível de precisão, calcule os erros absoluto e relativoentre as soluções numérica e analítica. Disserte sobre os resultadosencontrados.
17 / 68
Problemas de Interesse: Problema 3
A solução de:α2∂2u
∂x2=∂u
∂t, 0 < x < L e t > 0.
u (x , 0) = f (x) , 0 ≤ x ≤ L.u (0, t) = u (L, t) = 0, ∀t > 0.
é dada por u (x , t) =∞∑
m=1
Cme−m2π2α2t/L2sen
(mπxL
)onde
Cm =2L
∫ L
0f (x) sen
(mπxL
)dx , m = 1, 2, ...
Admita que f (x) = 1. Construa um código sequencial em gfortran,via diferenças nitas, para o cálculo numérico. Para avaliar o nível deprecisão, calcule os erros absoluto e relativo entre as soluçõesnumérica e analítica em no mínimo cinco tempos distintos. Dissertesobre os resultados encontrados.
18 / 68
Problemas de Interesse: Problema 4
Considere o problema:∂2u
∂x2+∂2u
∂y2= xy (y − 1) , Ω = (0, 1)× (0, 0.75) .
u (x , y) = 0, (x , y) ∈ ∂Ω.
Construa um código sequencial em gfortran, via diferenças nitas, parao cálculo numérico. Resolva o problema por um esquema implícito euse o método de Gauss-Seidel. Para avaliar o nível de precisão, calculeo erro relativo. Disserte sobre os resultados encontrados.
19 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
20 / 68
Programação Fortran 90 (Gfortran) - Sequencial: Apoio
Fortran 90/95;
https://ufsj.edu.br/
portal2-repositorio/File/
demat/PASTA-PROF/jorge/
Fortran.pdf
GNU fortran;
https://gcc.gnu.org/
onlinedocs/gfortran.pdf
Material desenvolvido sobre oconceito de programaçãosequencial
21 / 68
Programação Fortran 90 (Gfortran) - Sequencial: Motivação
Design 2D de uma garrafa de Coca-Cola
22 / 68
Programação Fortran 90 (Gfortran) - Sequencial: Motivador
1J
∂T
∂τ= σ
[∂
∂ξ
(Jα
∂T
∂ξ
)−
2∂
∂ξ
(Jβ∂T
∂η
)+
∂
∂η
(Jγ∂T
∂η
)], Ω× (0, τf ] .
T (ξ, η, 0) = 3, Ω
T (ξb, ηb, τ) = 40, ∂Ω0 × [0, τf ] .
∂T
∂n= 0, ∂ (Ω− Ω0)× [0, τf ] .
Ω é o domínio 2D, [0, τf ] a faixa de tempo com τf sendo o valor nal;
∂Ω0 é a região aquecida instantaneamente e ∂ (Ω− Ω0) o bordo quenão troca calor com o meio externo.
23 / 68
Programação Fortran 90 (Gfortran) - Sequencial: Quadro ...
24 / 68
Programação Fortran 90 (Gfortran) - Sequencial: Lógica ...
criação da malha Simulação
Octave
parâmetros e *.txt
55Fortran
executa
WW
*.dat
66Octave
Animação
No terminal
Na pasta COORD_GENERALIZADAS_IMPLICITO, altereparâmetros em SOLVER.f90 e dê um make para compilar, apósexecute ./executavel
25 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
26 / 68
Métricas
Existem duas classes de métricas de desempenho, são elas:
Sobre processadores - métricas que permitem avaliar a performance deprocessadores tomando como base a velocidade do mesmo e o númerode operações que consegue realizar no tempo;
MIPS (Millions of Instructions Per Second)
FLOPS (FLoating point Operations Per Second), ...
Sobre aplicações paralelas - métricas de performance de uma aplicaçãoparalela tomando como base a comparação entre a execução em umúnico processador e com múltiplos processadores;
Speedup - Eciência - Redundância - Utilização - Qualidade
para o nosso propósito neste curso a segunda é mais interessante.
27 / 68
Speedup & Eciência
O Speedup (Sp) é uma medida de:::::::::::desempenho da execução de um
programa paralelizado comparado ao mesmo programa mas na formasequencial
Sp3 =
t1tp
A Eciência (Ep) é uma medida do::::::quanto os recursos computacionais
disponíveis estão sendo utilizados
Ep =Spp
=⇒ Ep =t1
p × tp
onde t1 é o tempo de execução com 1 processador, tp o tempo de execuçãocom p processadores
3existem as lei de Amdahl e Gustafson-Barsis que modicam o Speedup28 / 68
Redundância, Utilização & Qualidade
A Redundância (Rp) é uma medida de::::::::::crescimento da computação
necessária para execução do programa
Rp =Op
O1
onde O1 é o número total de operações realizadas com 1 processador,e Op o número total de operações realizadas com p processadores
A Utilização (Up) é uma medida do::::::::::::::aproveitamento da capacidade
computacional para execução do programa
Up = Rp × Ep
A Qualidade (Qp) é uma medida do::::::quanto
:::::bom é a utilização da
programação paralela para a execução do programa
Qp =Sp × Ep
Rp29 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMPConceitosPARALLEL
DOSECTIONSSINGLE
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface 30 / 68
OpenMP: Conceitos
é uma interface de programação paralela, de memória compartilhadacom múltiplos processadores;
é composto por: clausulas de compilação, bibliotecas de execução evariáveis de ambiente
está sob o conceito de Threads com modelo fork / join
em Gfortran (Fortran 90) utiliza-se o identicador !$OMP paraimplementar paralelismo;
31 / 68
OpenMP: !$OMP PARALLEL ... !$OMP END PARALLEL
1: início2: • . MT3: • . MT4: !$OMP PARALLEL [atributo ...] . F5: IF (expressão lógica) . TS6: PRIVATE (lista) . TS7: SHARED (lista) . TS8: DEFAULT (PRIVATE | SHARED | NONE) . TS9: FIRSTPRIVATE (lista) . TS10: LASTPRIVATE (lista) . TS11: REDUCTION (operador: lista) . TS12: COPYIN (lista) . TS13: !$OMP END PARALLEL . J14: • . MT15: • . MT16: m
32 / 68
OpenMP: !$OMP DO ... !$OMP END DO
1: início2: • . MT3: !$OMP DO [atributo ...] . F4: SCHEDULE (tipo4 [,chunk]) . TS5: ORDERED . TS6: PRIVATE (lista) . TS7: FIRSTPRIVATE (lista) . TS8: LASTPRIVATE (lista) . TS9: SHARED (lista) . TS10: REDUCTION (operador | intrinsic : lista) . TS11: laço do - compartilha as iterações de laços por
entre o grupo de threads . TS12: !$OMP END DO [NOWAIT] . J13: • . MT14: m
4STATIC, DYNAMIC, GUIDED ou RUNTIME33 / 68
OpenMP: !$OMP SECTIONS ... !$OMP END SECTIONS
1: início2: • . MT3: • . MT4: !$OMP SECTIONS [atributo ...] . F5: PRIVATE (lista) . TS6: FIRSTPRIVATE (lista) . TS7: LASTPRIVATE (lista) . TS8: REDUCTION (operador | intrinsic : lista) . TS9: !$OMP SECTION . TS10: BLOCO - a diretiva sections dene pedaços do código
que são executados em paralelo . TS11: !$OMP SECTION . TS12: BLOCO - cada section é executada por uma thread . TS13: !$OMP END SECTIONS [NOWAIT] . J14: • . MT15: • . MT16: m
34 / 68
OpenMP: !$OMP SINGLE ... !$OMP END SINGLE
1: início2: • . MT3: • . MT4: !$OMP SINGLE [atributo ...] . F5: PRIVATE (lista) . TS6: FIRSTPRIVATE (lista) . TS7: BLOCO - diretiva que ordena ao código executar
apenas uma thread . TS8: !$OMP END SINGLE [NOWAIT] . J9: • . MT10: • . MT11: m
35 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 ExemplosOláCálculo do πSoma e Multiplicação SobreMatrizes Quadradas
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface 36 / 68
Olá aos Matemáticos
1 Funções do OpenMPOMP_GET_NUM_PROCS()OMP_GET_NUM_THREADS()OMP_GET_THREAD_NUM()mas existem mais funções, tarefa de casa PESQUISAR
2 Identicadores!$OMP PARALLEL PRIVATE(ID)
- PARALLEL dene uma região paralela- PRIVATE(ID) a variável ID é privada dentro da região,e cada thread tem acesso exclusivo a uma cópia dessavariável. Além disso, possui valor inicial indenido.Outra forma de denir variáveis privadas é viaFIRSTPRIVATE e LASTPRIVATE.
!$OMP BARRIER
- BARRIER é uma cláusula de barreira para asincronização.
37 / 68
π =4
1− 4
3+
4
5− 4
7+
4
9− 4
11+
4
13− 4
15+
4
17− 4
19+ ...
1 Funções do OpenMPOMP_GET_WTIME()mas existem mais funções, tarefa de casa PESQUISAR
2 Identicador!$OMP PARALLEL DO REDUCTION (+:NUM_PI_PAR)
- REDUCTION uma cópia de NUM_PI_PAR é criadapara cada thread. Ao nal da região paralela denidapelo construtor, a variável original é atualizada com osvalores da cópia privada de cada thread usando ooperador +.
Tabela de operadores
Operador Valor inicial Operador Valor inicial
+ 0 & ∼ 0∗ 1 | 0- 0 && 1∧ 0 || 0
38 / 68
(+, •) sobre matrizes
1 Identicadores!$OMP DO PRIVATE(J)
- DO é responsável pela divisão das iterações do laçoentre as threads, com conhecimento prévio do númerode iterações.
!$OMP SECTIONS PRIVATE(I,J,K)
- SECTIONS faz a divisão das tarefas entre as threadsna forma de blocos !$OMP SECTION.
39 / 68
(+, •) sobre matrizes
Por exemplo, seja n = 3 em que M =
1 2 34 5 67 8 9
tal que
S = M + M ⇒ S =
2 4 68 10 1214 16 18
P = M ·MT ⇒ P =
14 32 5032 77 12250 122 194
então segue que:
40 / 68
(+, •) sobre matrizes: n = 1000
S P 41 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
42 / 68
OpenMP: Diretivas
O objetivo da combinação de diretivas é reduzir a sintaxe de instruções doOpenMP, o que implica numa compreensão mais direta do código progra-mado.
PARALLEL DO- dene uma região paralela, e ao mesmo tempo, distribuias iterações do loop na região por entre as threadsde um grupo
PARALLEL SECTIONS- dene uma região paralela e simultaneamente as seçõesque cada thread irá executar
43 / 68
Mais um exemplo: Produto Interno 〈A,B〉
!$OMP DO
- Faz a divisão das iterações do laço entre as threads,com conhecimento prévio do número de iterações.
!$OMP PARALLEL DO SCHEDULE(STATIC,CHUNK)REDUCTION(+:SS)
- Dene uma região paralela, agenda uma divisão no laçoe então atualiza corretamente a soma para nalmentedar o valor do produto interno.
STATIC,CHUNK
- O loop é fragmentado em partes com tamanhotamanho chunk e distribuído estaticamente para cadathread pela ordem identicada a cada trhead.
44 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
45 / 68
OpenMP: Diretivas
MASTER- dene uma região que será executada apenas pelathread mestre do grupo
CRITICAL- dene que a região do código deva ser executadasomente por uma thread de cada vez
BARRIER- dene a sincronização de todas as threads de um grupo
46 / 68
OpenMP: Diretivas
ATOMIC- dene que certa região da memória seja atualizadaatomicamente, impedindo que várias threads acessemessa região ao mesmo tempo
FLUSH- dene a atualização dos dados compartilhados entre osthreads na memória
ORDERED- dene que as iterações em loop, em uma regiãoparalela, sejam executadas de modo sequencial
47 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
48 / 68
Apoio Extra
É imprescindível a leitura crítica e compreensão das seguintes bibliograas:
Artigo:1 https://www.google.com/url?sa=t&rct=j&q=&esrc=s&
source=web&cd=1&ved=
2ahUKEwiKpMCcq-reAhXHqZAKHbMzBkwQFjAAegQIBhAC&
url=http%3A%2F%2Folaria.ucpel.tche.br%2Fnelsiw%
2Flib%2Fexe%2Ffetch.php%3Fid%3Dstart%26cache%
3Dcache%26media%3Dopenmp.pdf&usg=
AOvVaw33MR7a-75d1Gstq2EwnZ2I
Artigo:2 http://www.linuxnewmedia.com.br/images/uploads/
pdf_aberto/LM47_72-77.pdf
Artigo:3 http://www.inf.ufrgs.br/erad2018/downloads/
minicursos/eradrs2018-fortran.pdf
49 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
50 / 68
OpenMP: Leis1 A diretiva DO, SECTIONS, SINGLE, MASTER e BARRIER só
serão utilizadas se estiverem em uma região paralela denida peladiretiva PARALLEL.
2 A diretiva ORDERED só é usada junto com a diretiva DO.
3 A diretiva ATOMIC atua sobre todas as threads utilizadas.
4 Uma diretiva PARALLEL aninhada a outra diretiva PARALLELestabelece um novo grupo, que será composto apenas pela threadque primeiro alcançar a nova região paralela.
5 Não é permitido a atuação da diretiva BARRIER dentro das regiõesdenidas pelas diretivas DO, ORDERED, SECTIONS, SINGLE,MASTER e CRITICAL.
6 Qualquer diretiva poderá ser executada fora de uma região denidapela diretiva PARALLEL, contudo será executada somente pelathread master. 51 / 68
Sumário
1 Problemáticas
2 Introdução
3 Problemas de Interesse
4 Programação Fortran 90 (Gfor-tran) - Sequencial
5 Ferramentas para avaliação deperformance
6 OpenMP
7 Exemplos
8 Construções Combinadas
9 Construções de Sincronização
10 Mais um pouco de ProgramaçãoOpenMP
11 Regras Operacionais
12 Message Passing Interface
52 / 68
MPI: Conceitos
O modelo computacional Message-Passing do MPI é constituído de:um conjunto de processos que possuem acesso à memória local;comunicação entre processos, via recebimento e envio de mensagens;transferência de dados entre processos mediante operações decooperação entre os mesmos, isto é, um envio deve ser recebido para aefetivação da computação;aproximadamente 125 funções para programação e análise.
53 / 68
MPI: Denições
Rank é a identicação de um processo atribuída pelo S.O. quandoinicializado. Essa identicação é contínua e do tipo
0, 1, 2, ...,N − 1 processos.
Group é o conjunto de N processos. Todo grupo está vinculadocommunicator.
Communicator dene uma coleção de processos (grupo), quepoderão comunicar-se entre si. MPI_COMM_WORLD é ocomunicador pré-denido que inclui todos os processos denidos pelousuário numa aplicação MPI.
Aplication Buer é um endereço de memória que armazena um dadoa ser enviado ou recebido.
54 / 68
MPI: Denições
System Buer é um endereço de memória reservado pelo sistemapara armazenar mensagens.
Blocking Comunication é uma rotina de comunicação que dependede um evento para ser efetivada.
Non-Blocking Communication é uma rotina de comunicação quenão depende de um evento para ser efetivada. É responsabilidade doprogramador a certeza de que o aplication buer esteja livre paraser reutilizado.
Standard Send é a operação básica de envio de mensagem de umprocesso para outro. Pode ser blocking ou non-blocking.
Standard Receive é a operação básica de recebimento de mensagemde um processo para outro. Pode ser blocking ou non-blocking.
55 / 68
MPI: Denições
Synchronous Send é um bloqueio até que ocorra um receivecorrespondente no processo de destino. Pode ser blocking ounon-blocking.
Buered Send é a criação de um "buer"para o dado antes de serenviado. Necessita da garantia de espaço disponível, na incerteza deespaço do "System Buer".
Ready Send é um tipo de "send"que pode ser usado na certeza daexistência de um "receive"correspondente ativo.
Return Code é um valor inteiro retornado pelo sistema para indicar analização de uma sub-rotina.
56 / 68
MPI: As rotinas básicas mais utilizadas
CALL MPI_INIT(ERR) - é a primeira rotina MPI a ser chamadaem cada processo, e que estabelece o ambiente de execução paralela.Nesta rotina há a sincronização dos processos na inicialização.
ERR - ERR = 0 (sucesso); ERR < 0 (erro)
CALL MPI_COMM_RANK(COMM,RANK,ERR) - identica oprocesso, dentro de um grupo de processos, e seu valor é um númerointeiro entre 0 e n − 1 processos.
COMM - comunicador MPIRANK - variável inteira que retorna o número de identicação
do processoERR - variável inteira que retorna o status da rotina
57 / 68
MPI: As rotinas básicas mais utilizadas
CALL MPI_COMM_SIZE(COMM,SIZE,ERR) - retorna onúmero de processos dentro de um grupo de processos.
COMM - comunicador MPISIZE - variável inteira que retorna o número de processos
inicializados.ERR - variável inteira que retorna o status da rotina.
CALL MPI_SEND(SENDMESS, COUNT, DATATYPE, DEST,TAG, COMM, ERR) - rotina de envio de mensagem.SENDMESS - mensagem a ser enviada.
COUNT - número de elementos a serem enviados.DATATYPE - tipo do dado.
DEST - identicação do processo destino.TAG - rótulo da mensagem.
COMM - comunicador MPI.ERR - variável inteira que retorna o status da rotina.
58 / 68
MPI: CALL MPI_SEND
Uma MPI-Message é constituída de duas partes:
MPI_SEND(SENDMESS ,COUNT ,DATATYPE︸ ︷︷ ︸dado︸ ︷︷ ︸
mensagem,noelementos,tipo
,DEST ,TAG ,COMM︸ ︷︷ ︸envelope︸ ︷︷ ︸
identidade,etiqueta,comunicador
,ERR)
Tipos de dados
MPI_INTEGER MPI_REALMPI_DOUBLE_PRECISION MPI_COMPLEXMPI_LOGICAL MPI_CHARACTERMPI_BYTE MPI_PACKED
59 / 68
MPI: As rotinas básicas mais utilizadas
CALL MPI_RECV(RECVMESS, COUNT, DATATYPE,SOURCE, TAG, COMM, STATUS, ERR) - rotina de envio demensagem.RECVMESS - mensagem a ser recebida.
COUNT - número de elementos a serem recebidos.DATATYPE - tipo do dado.
SOURCE - identicação da fonte.TAG - rótulo da mensagem.
COMM - comunicador MPI.STATUS - vetor com informação de SOURCE e TAG.
ERR - variável inteira que retorna o status da rotina.
CALL MPI_FINALIZE(ERR) - rotina que naliza o processo para oMPI, é a última rotina a ser executada, sincroniza todos os processosna nalização de uma aplicação MPI.
ERR - variável inteira que retorna o status da rotina.60 / 68
MPI: Comunicação point - to - point
É aquela em que um processo envia uma mensagem e outro processo recebea mensagem.
Modos de comunicação:synchronous
readybueredstandard
Modos de processamento:blocking
non-blocking
Há 4 tipos de (non-)blocking send(para cada modo de comunicação) e 1tipo (non-)blocking receive que recebe os dados.
Toda rotina non-blocking é rotulada tipo MPI_I****
(non-)blocking sendMPI_SSEND[ISSEND]MPI_RSEND[IRSEND]MPI_BSEND[IBSEND]MPI_SEND[ISEND]
(non-)blocking receiveMPI_RECV[IRECV]
61 / 68
MPI: Comunicação point - to - point
Principais conjecturas:
o modo Synchronous é mais seguro e portável;
o modo Ready possui o menor índice overhead5, mas a execução deum receive deve preceder a execução de send;
o modo Buered elimina o Synchronization overhead e permitecontrole no tamanho do buer;
o modo non-blocking possui a vantagem de continuar na execuçãomesmo se a mensagem ainda não tiver sido enviada e elimina odeadlock6, e reduz o synchronization overhead.
5é um processamento ou armazenamento em excesso, seja de tempo de computação,
de memória, de largura de banda ou qualquer outro recurso6fenômeno comum quando se utiliza blocking communication, ocorre quando todos
os processos aguardam por eventos ainda não iniciados62 / 68
MPI: Comunicação point - to - point
Principais rotinas auxiliares:
MPI_BUFFER_ATTACH
MPI_BUFFER_DETACH
MPI_WAIT
MPI_WAITALL
MPI_TEST
MPI_TEST_EXTENT
63 / 68
MPI: Comunicação all - to - all
É aquela em que todos os processos são de certa forma alterados por send/-receive.
A comunicação é dividida pelas classes:synchronizationdata movementglobal computation
Basicamente envolve:comunicação coordenadabloqueamentosincronização ou não sincronização
64 / 68
MPI: Comunicação all - to - all
Principais rotinas auxiliares:
SynchronizationMPI_BARRIER - sincroniza todos os processos de um grupo
Data MovementMPI_BCAST - permite que um processo envie dados para todos osprocessos de um grupoMPI_GATHER - permite que cada processo envie uma mensagem parao processo master, que ao recebê-las, armazena na ordem de chegadaMPI_SCATTER - operação inversa ao GATHERMPI_ALLGATHER - é uma operação GATHER em que todos osprocessos recebem as mensagensMPI_ALLTOALL - permite que cada processo envie seus dados paratodos os outros processos
65 / 68
MPI: Comunicação all - to - all
Global ComputationMPI_REDUCE - permite que o resultado parcial de cada processo emum grupo seja combinado e retornado para um processo especíco,utilizando alguma operação
Operação de redução
Função Tipos ResultadoMPI_MAX integer, real, complex retorna o valor máximoMPI_MIN , , retorna o valor mínimoMPI_SUM , , retorna o valor somadoMPI_PROD , , retorna o valor multiplicado
66 / 68
MPI: Compilação
MPICHdesenvolvido por Argonne National Laboratory e Mississipi State
University
de domínio públicotem denido em um único comando a compilação e a linkedição
Comandos para a instalação do MPICHsudo apt install mpichsudo apt install libmpich-dev
Comandos para compilação e execução com makele construídomake
mpiexec︸ ︷︷ ︸execução mpi
execução por 4 processos︷ ︸︸ ︷-np 4 ./exec︸ ︷︷ ︸
nome do executável
67 / 68
MPI: Apoio Extra
Seguem três materiais úteis no desenvolvimento de aplicações paralelas como MPI:
Artigo:1 http://www.mcs.anl.gov/research/projects/mpi/www/
Artigo:2 http:
//people.sc.fsu.edu/~jburkardt/f_src/mpi/mpi.html
Artigo:3 https://idre.ucla.edu/sites/default/files/
mpi-2013-02-13.pdf?x83242
68 / 68
Recommended