Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela...

68

Transcript of Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela...

Page 1: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 2: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 3: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 4: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 5: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 6: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 7: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 8: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 9: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 10: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 11: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 12: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 13: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 14: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 15: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 16: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 17: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 18: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 19: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 20: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 21: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 22: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

Programação Fortran 90 (Gfortran) - Sequencial: Motivação

Design 2D de uma garrafa de Coca-Cola

22 / 68

Page 23: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 24: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

Programação Fortran 90 (Gfortran) - Sequencial: Quadro ...

24 / 68

Page 25: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 26: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 27: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 28: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 29: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 30: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 31: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 32: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 33: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 34: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 35: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 36: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 37: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 38: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

π =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

Page 39: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

(+, •) 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

Page 40: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

(+, •) 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

Page 41: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

(+, •) sobre matrizes: n = 1000

S P 41 / 68

Page 42: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 43: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 44: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 45: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 46: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 47: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 48: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 49: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 50: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 51: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 52: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 53: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 54: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 55: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 56: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 57: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 58: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 59: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 60: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 61: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 62: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 63: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 64: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 65: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 66: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 67: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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

Page 68: Ferramentas de Programação Paralela para Solução de …Ferramentas de Programação Paralela para Solução de Equações Prof. Dr. Eliandro R. Cirilo Universidade Estadual de

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