Professional Documents
Culture Documents
ACSTICA 3D
Engenharia Civil.
Coutinho
Rio de Janeiro
Setembro de 2016
EXPLORANDO PARALELISMO HBRIDO NA PROPAGAO DA ONDA
ACSTICA 3D
CIVIL.
Examinada por:
SETEMBRO DE 2016
Jorge, Schirley Corra
UFRJ/COPPE, 2016.
Ttulo.
iii
Ao meu pai, Domnio Jorge (in
memoriam), que sempre me
incentivou a estudar e a minha
me, Hilda Corra Jorge, por
sempre me apoiar, no me
deixando fraquejar nos
momentos mais difceis.
iv
Agradecimentos
vida.
Aos meus orientadores Prof. Alvaro Luiz G. de Azeredo Coutinho e Dr. Jos
trabalho.
Aos geofsicos Dr. Josias Jos da Silva e Bruno de Souza Silva pelas contribuies
Texas em Austin por fornecer o supercomputador que foi essencial para a realizao
desse trabalho.
pela boa vontade e ajuda que foram essenciais para obter a documentao necessria
Agradeo a minha famlia e a minha grande amiga Maria Iracema P. dos Santos
Enm, meu sincero agradecimento a todos aqueles que de uma forma ou de outra
v
Resumo da Dissertao apresentada COPPE/UFRJ como parte dos requisitos
ACSTICA 3D
Setembro/2016
escalveis para produzir resultados em tempo hbil. Este trabalho descreve uma
algoritmo paralelo possui escalabilidade forte com melhor ecincia para malhas
sucientemente grandes.
vi
Abstract of Dissertation presented to COPPE/UFRJ as a partial fulllment of the
PROPAGATION
September/2016
wave propagation model, that employs the Finite Dierence Method (FDM) with
8th-order in space and second order in time. The implementation uses hybrid
MPI/OpenMP where the domain decomposition is performed via MPI and OpenMP
is used to parallelize the stencil computation in each MPI process. This work also
measurement tools. These tools provide insights about the domain decomposition
functional unit cores. Applying the insights obtained from the Tuning and Analysis
performance of the seismic modeling code in about 7.30%. All optimizations increase
code performance by roughly 50%. This work also presents a scalability study,
showing that the parallel algorithm has strong scalability with better eciency for
vii
Sumrio
Lista de Figuras x
Lista de Tabelas xiii
1 Introduo 1
2 Modelagem Ssmica 5
2.1 Equao da onda acstica . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Otimizaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4 Anlise de Desempenho 38
4.1 Ferramentas de perlagem . . . . . . . . . . . . . . . . . . . . . . . . 38
viii
4.2 Anlise de perlagem . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ix
Lista de Figuras
direo y. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
x
3.15 Arranjos de campo de presso no tempos t 1, t, t + 1. Extrado de
ANDREOLLI (2016). . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
por processo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
OpenMP_WAIT_BARRIER. . . . . . . . . . . . . . . . . . . . . . . 49
(M P I _W aitall ) e clculo do
stencil (OpenM P _LOOP ) para malha
de tamanho N x = N y = N z = 1024. . . . . . . . . . . . . . . . . . . 63
(M P I _W aitall ) e clculo do
stencil (OpenM P _LOOP ) para malha
de tamanho N x = N y = N z = 2048. . . . . . . . . . . . . . . . . . . 63
xi
4.21 Valores mximo de tempo de execuo para comunicao
(M P I _W aitall ) e clculo do
stencil (OpenM P _LOOP ) para malha
de tamanho N x = N y = N z = 4096. . . . . . . . . . . . . . . . . . . 63
xii
Lista de Tabelas
medido em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
stencil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
xiii
Captulo 1
Introduo
para a segurana nacional dos pases mais importantes do mundo. Para pases
para gerar o pulso ssmico, que se propaga pelo interior da Terra, onde reetido
nas interfaces das camadas, e retorna superfcie onde captado pelos receptores.
Estes captam a amplitude e o tempo que a onda levou para percorrer desde a fonte
dado de campo.
1
O modelo matemtico adotado nesse trabalho a equao da onda acstica,
Mtodo de Diferenas nitas (MDF), que amplamente utilizado devido a sua fcil
implementao e paralelizao.
Nas ltimas duas dcadas o poder de uma nica CPU tem aumentado consi-
tem mostrado ser uma soluo eciente para melhorar o desempenho de aplicaes
essenciais.
tipo memria distribuda no nvel geral do sistema, mas utilizam memria compar-
cados como tendo uma arquitetura de cluster e quase todos possuem processadores
multi-core. Ainda que arquiteturas hbridas tm sido utilizadas por mais de uma
dcada, a maioria das aplicaes paralelas utilizam MPI puro para paralelizao
de mensagens para memria distribuida, oferecendo uma biblioteca com uma inter-
idia bsica desse modelo permitir que qualquer processo MPI possa criar um
grupo de threads OpenMP da mesma forma como a thread mestre faz em um pro-
trabalhos bem sucedidos para paralelizar Migrao Reversa no Tempo (em ingls,
2
atravs dos cores. QAWASMEH et al. (2015) utilizam um modelo hbrido com
dentro do n.
tarefa que executada pelo OpenMP juntamente com a computao sem afetar o
PAUL et al. (2015) utilizaram uma thread OpenMP de comunicao dedicada para
solucionar a questo da sobreposio.
zao do stencil empregado nos algoritmos com malha, como a modelagem ssmica.
tetura da mquina como vetorizao e cache bloking , que aumenta reuso de cache.
DE LA CRUZ MARTNEZ (2015) prope a tcnica de semi-stencil que aumenta o
gao da onda acstica 3D. O algoritmo utiliza MPI com funes no bloqueantes
3
ramentas de perlagem, denir uma soluo para os problemas encontrados e im-
senta ainda a discretizao da equao da onda acstica pelo Mtodo das Diferenas
Finitas (MDF).
mentas utilizadas e os resultados que elas forneceram. Com base nesses resultados
O captulo 5 conclui esta dissertao com um resumo do que foi feito e prope
4
Captulo 2
Modelagem Ssmica
enviadas para a Terra (Figuras 2.1 e 2.2). Parte dessa energia reetida de volta
preciso a intensidade desta energia e o tempo que esta viaja atravs das vrias
geofsicos ento usam o levantamento ssmico para obter uma imagem da estrutura
5
Figura 2.2: Levantamento ssmico terrestre. 1- Fonte ssmica, 2- Reexo da
energia ssmica na interface geolgica, 3- Geofones que captam a energia reetida,
4- Estao de registro. Extrado de SERCEL (2016).
Um dos usos mais comuns dos dados ssmicos est relacionado com a explorao,
interior da Terra, onde aplica-se uma fonte em um dado ponto do modelo e utilizando
onde aparecem as reexes nas interfaces dos modelos, provenientes da passagem das
ondas ssmicas atravs das interfaces entre materiais geolgicos de impedncia acs-
pode ser usada para formulao da inverso ssmica no-linear, processos de mi-
Neste trabalho, ser realizada a modelagem ssmica para um meio acstico 3D,
onda acstica, que ser discretizada pelo Mtodo das Diferenas Finitas (MDF).
6
Nas sees seguintes essa equao ser apresentada, bem como sua discretizao e
e estabilidade numrica.
e que pode ser obtida por meio da aplicao das leis de Newton e Hooke, que
equao a seguir:
2U 2U 2U 1 2U
+ + = f (t)(r r0 ) (2.1)
x2 y 2 z 2 V 2 t2
U (x, y, z, 0) = 0
t
numricos em sismologia, isto devido ao fato de que aplicvel aos modelos com-
EBERLY (2016) para aproximar derivadas de funes univariadas F (x). Esse con-
ceito dene que para um espaamento pequeno da malha h > 0, a d-sima ordem
da derivada satisfaz a seguinte equao:
7
iX
max
hd (d)
F (x) = Ci F (x + ih) + O(hd+p ) (2.2)
d! i=i min
iX
(
max
0, 0nd+p1 e n 6= d
i n Ci = (2.3)
i=imin 1, n=d
oitava ordem para as derivadas espaciais, com erro da ordem p = 8. Dessa forma,
cuja soluo :
8
1
C4 1120
4
C3 315
C2 1
10
4
C1 5
C0 = 205
144
C1 45
C2 1
10
4
C3 315
1
C4 1120
1 h 1 8 1 8
F (2) (x) = F (x 4h) + F (x 3h) F (x 2h) + F (x h)
(h)2 560 315 5 5
205 8 1 8 1 i
F (x) + F (x + h) F (x + 2h) + F (x + 3h) F (x + 4h)
72 5 5 315 560
(2.4)
uma expresso geral com aproximao de segunda ordem para a segunda derivada
1
F (2) (t) = [F (t t) 2F (t) + F (t + t)] (2.5)
(t)2
ponto genrico P (x, y, z) da malha pode ser expresso de forma discretizada como
x = ix, i = 1, 2, 3, ..., N x;
y = jy, j = 1, 2, 3, ..., N y;
z = kz, k = 1, 2, 3, ..., N z.
9
A partir dos valores iniciais para o campo de presso U (x, y, z, 0) no instante
tempo t, 2t, 3t,... . Dessa forma, um instante de tempo pode ser expresso
como t = nt.
Utilizando os ndices i, j, k e n tem-se a seguinte notao para o campo de presso
e fonte ssmica:
n
U (x, y, z, t) = Ui,j,k
n = 0, 1, 2, 3, ...
f (t) = fn
1 h 1 n 8
(Uxx )ni,j,k = n
(Ui4,j,k + Ui+4,j,k )+ (U n n
+ Ui+3,j,k ) (2.6)
2
(x) 560 315 i3,j,k
1 n n 8 n n 205 n i
(Ui2,j,k + Ui+2,j,k ) + (Ui1,j,k + Ui+1,j,k ) U
5 5 72 i,j,k
1 h 1 n 8
(Uyy )ni,j,k = n
(Ui,j4,k + Ui,j+4,k )+ (U n n
+ Ui,j+3,k ) (2.7)
2
(y) 560 315 i,j3,k
1 n n 8 n n 205 n i
(Ui,j2,k + Ui,j+2,k ) + (Ui,j1,k + Ui,j+1,k ) U
5 5 72 i,j,k
1 h 1 n 8
(Uzz )ni,j,k = 2
n
(Ui,j,k4 + Ui,j,k+4 )+ n
(Ui,j,k3 n
+ Ui,j,k+3 ) (2.8)
(z) 560 315
1 n n 8 n n 205 n i
(Ui,j,k2 + Ui,j,k+2 ) + (Ui,j,k1 + Ui,j,k+1 ) U
5 5 72 i,j,k
1
(Utt )ni,j,k = [U n1 2Ui,j,k
n n+1
+ Ui,j,k ] (2.9)
(t)2 i,j,k
onde Uxx , Uyy , Uzz e Utt representam a segunda derivada parcial de U em relao
x, y , z e t, respectivamente. Os ndices i + 4, i + 3, i + 2, i + 1 representam posies
posteriores na direo x, i representa a posio atual e i 4, i 3, i 2, i 1
10
A equao da onda discretizada obtida pela substituio das equa-
n+1
es 2.6, 2.7, 2.8 e 2.9 na equao 2.1 e isolando o termo Ui,j,k que representa o
V t 2 h 1 8
n+1 i,j,k n n
Ui,j,k = (Ui4,j,k + Ui+4,j,k )+ (U n n
+ Ui+3,j,k )
x 560 315 i3,j,k
1 n n 8 n n 205 n i
(Ui2,j,k + Ui+2,j,k ) + (Ui1,j,k + Ui+1,j,k ) U +
5 5 72 i,j,k
V t 2 h 1 8
i,j,k n n
(Ui,j4,k + Ui,j+4,k )+ (U n n
+ Ui,j+3,k )
y 560 315 i,j3,k
1 n n 8 n n 205 n i
(Ui,j2,k + Ui,j+2,k ) + (Ui,j1,k + Ui,j+1,k ) U + (2.10)
5 5 72 i,j,k
V t 2 h 1 8
i,j,k n n n n
(Ui,j,k4 + Ui,j,k+4 )+ (Ui,j,k3 + Ui,j,k+3 )
z 560 315
1 n n 8 n n 205 n i
(Ui,j,k2 + Ui,j,k+2 ) + (Ui,j,k1 + Ui,j,k+1 ) U +
5 5 72 i,j,k
n
2Ui,j,k n1
Ui,j,k + fn (r r0 )
h 205
n+1 n
Ui,j,k =Ci,j,k 3 Ui,j,k
72
8 n n n n n n
+ Ui1,j,k + Ui+1,j,k + Ui,j1,k + Ui,j+1,k + Ui,j,k1 + Ui,j,k+1
5
1 n n n n n n
Ui2,j,k + Ui+2,j,k + Ui,j2,k + Ui,j+2,k + Ui,j,k2 + +Ui,j,k+2 (2.11)
5
8 n n n n n n
+ Ui3,j,k + Ui+3,j,k + Ui,j3,k + Ui,j+3,k + Ui,j,k3 + Ui,j,k+3
315
1 n n n n n n
i
Ui4,j,k + Ui+4,j,k + Ui,j4,k + Ui,j+4,k + Ui,j,k4 + Ui,j,k+4
560
n
+ 2Ui,j,k n1
Ui,j,k + fn (r r0 )
zada com aproximao de oitava ordem para as derivadas espaciais e segunda ordem
n
para derivadas temporais, com malha uniforme h. O termo Ui,j,k representa o valor
n1 n+1
do campo de onda no presente, o termo Ui,j,k o campo no tempo anterior e Ui,j,k
o valor do campo no tempo posterior.
campo de onda, o que caracteriza uma discretizao explcita, onde pode-se deter-
11
minar os valores de uma grandeza fsica em tn+1 em funo dos valores conhecidos
causada em virtude das discretizaes realizadas, que fazem com que as ondas
Vmin
h (2.12)
fmax
no clculo (FLETCHER, 1992). O acmulo desses erros pode ser evitado impondo-
pode ser utilizado. O clculo desse limite para o problema de propagao da onda
h
t (2.13)
Vmax
12
2.3 Fonte ssmica
A fonte ssmica modelada por uma funo matemtica e nesta dissertao
2
f (t) = [1 2(fc t)2 ]e(fc t) (2.14)
fcorte
fc = (2.15)
3
A funo fonte ser discretizada conforme a equao 2.16 com o objetivo de se
t = (n 1)t T F (2.16)
2
TF = (2.17)
fc
A Figura 2.3 representa a funo para a fonte ssmica expressa pela segunda
Figura 2.3: Derivada segunda da Gaussiana para uma frequncia de corte de 60 Hz.
Extrado de BULCO (2004).
13
2.4 Bordas no-reexivas
Os problemas de propagao de ondas so normalmente resolvidos para um meio
para se obter um modelo nito. A introduo desses limites nos modelos provoca
a reexo das ondas a partir das bordas. Com o intuito de reduzir as reexes nas
planas. Assim, para uma onda plana propagando-se para a direita do modelo, tem-
1
+ U (x, y, z, t) = 0 (2.18)
x V t
1
U (x, y, z, t) = 0 (2.19)
x V t
1 n+1
U = 0 (i = 1; j = 1, ..., N y; k = 1, ..., N z; n = 0, 1, ...)
x Vi,j,k t i,j,k
(2.20)
demais bordas:
Borda direita:
1 n+1
+ U = 0 (i = N x; j = 1, ..., N y; k = 1, ..., N z; n = 0, 1, ...)
x Vi,j,k t i,j,k
(2.21)
14
Borda da frente:
1 n+1
+ U = 0; (i = 1, ..., N x; j = N y; k = 1, ..., N z; n = 0, 1, ...)
y Vi,j,k t i,j,k
(2.22)
Borda do fundo:
1 n+1
U = 0 (i = 1, ..., N x; j = 1; k = 1, ..., N z; n = 0, 1, ...)
y Vi,j,k t i,j,k
(2.23)
Borda inferior:
1 n+1
+ U = 0 (i = 1, ..., N x; j = 1, ..., N y; k = N z; n = 0, 1, ...)
y Vi,j,k t i,j,k
(2.24)
Borda esquerda:
n+1 n Vi,j,k t n n
U1,j,k = U1,j,k + (U2,j,k U1,j,k ) (2.25)
x
(j = 1, 2, ..., N y; k = 1, 2, ..., N z; n = 0, 1, 2, ...)
Borda direita:
Vi,j,k t n
UNn+1 n
x,j,k = UN x,j,k (UN x,j,k UNn x1,j,k ) (2.26)
x
Borda da frente:
n+1 n Vi,j,k t n n
Ui,N y,k = Ui,N y,k (Ui,N y,k Ui,N y1,k ) (2.27)
y
15
(i = 1, 2, ..., N x; k = 1, 2, ..., N z; n = 0, 1, 2, ...)
Borda do fundo:
n+1 n Vi,j,k t n n
Ui,1,k = Ui,1,k + (Ui,2,k Ui,1,k ) (2.28)
y
(i = 1, 2, ..., N x; k = 1, 2, ..., N z; n = 0, 1, 2, ...)
Borda inferior:
n+1 n Vi,j,k t n n
Ui,j,N z = Ui,j,N z (Ui,j,N z Ui,j,N z1 ) (2.29)
z
(i = 1, 2, ..., N x; j = 1, 2, ..., N y; n = 0, 1, 2, ...)
Vale ressaltar que a borda superior no sofre nenhuma alterao uma vez que se
amplitude do campo de onda quando este passa por essa camada. Esta estratgia foi
proposta por CERJAN et al. (1985), sendo conhecida como Borda de Amortecimento
ou Caixa de Areia. Entretanto a camada de amortecimento no foi considerada no
presente trabalho.
16
Captulo 3
Paralelizao e Otimizao do
Cdigo
acstica 3D. A discretizao foi realizada pelo MDF com aproximao de oitava
paralelos.
ponto da malha com seus vizinhos imediatos. A execuo eciente dessas simulaes
17
atribudas a cada processador e minimizando a comunicao entre processadores, que
necessria para realizar a troca de informaes entre clulas adjacentes. Tal ma-
grafo.
cientca pode ser realizada nos ns da malha, nas clulas da malha, ou em ambos.
de construir. Nesse grafo existe um vrtice para cada n da malha e uma aresta
sobre as clulas da malha, ento o grafo de tal modo que cada clula da malha
modelada por um vrtice e existe uma aresta entre dois vrtices sempre que as
clulas correspondentes compartilham uma borda (em 2D) ou uma face (em 3D),
esse grafo o dual do grafo nodal. A Figura 3.1 ilustra um exemplo 2D. Figura 3.1
(a) mostra uma malha de diferenas nitas, e a Figura 3.1 (b) mostra o grafo no-
dal correspondente. Figura 3.1 (c) mostra a partio do grafo da conexo entre as
Figura 3.1: (a) malha 2D regular. O grafo em (b) modela a conectividade entre os
ns da malha (grafo nodal) e (c) representa o grafo particionado por clula em 2
subdomnios.
partio do domnio por clula, como mostrado na Figura 3.1 (c), um determinado
18
gortmos para particionamento de grafos e as tcnicas empregadas por eles. O foco
igualmente espaados (por exemplo, X/P ). Desta forma, dado um ponto da malha
(nx ,
ny ), calcula-se a posio da partio na coordenada x e y , respectivamente,
px = bP nx /Xc e py = bQ ny /Y c, atribuindo o ponto (nx , ny ) a parte (px , py )
(GRANDJEAN e UAR, 2014).
MPI dene cada unidade de execuo como um processo, cada processo tem
seu prprio espao de endereo local. Processos cooperam para realizar uma tarefa
com escopo para um grupo de processos especicado pelo usurio. Alm disso, MPI
19
sendo realizada. Em segundo lugar, topologias virtuais permitem mapeamento de
mento funcional das chamadas MPI tambm padronizado, logo, as chamadas MPI
dados, caso contrrio, as threads iro escrever no mesmo espao de memria resul-
20
tal modo que dois vrtices adjacentes possuem cores diferentes. Colorao de grafo
Figura 3.2. Nas sees seguintes essas etapas sero apresentadas com detalhes. A
seo 3.2.1 explica como foi realizada a decomposio do domnio, etapa essencial
de velocidades entre os processos MPI, a seo 3.2.3 mostra como foi identicado o
processo que contm a fonte ssmica, a seo 3.2.4 detalha o clculo do campo de
21
Figura 3.2: Fluxograma do programa paralelo.
essa medida foi necessria pois so utilizados apenas dois arranjos para o campo
balho e a memria necessria entre eles. MPI dene cada unidade de execuo como
menso, em duas dimenses ou nas trs dimenses, conforme as Figuras 3.3, 3.4 e 3.5.
22
Figura 3.3: (a)Partio na direo z, (b)Partio na direo x, (c)Partio na
direo y.
a quantidade total de processos nas 3 direes. Sejam npx, npy e npz os nmeros de
23
processos (parties) nas direes x, y e z respectivamente e N umP roc a quantidade
total de processos MPI. Sendo assim, o algoritmo efetua uma distribuio que atenda
para cada processo MPI, o tamanho do subdomnio em cada direo, sendo nxlocal,
nylocal e nzlocal respectivamente os tamanhos dos subdomnios nas direes x, y
e z , conforme a Figura 3.6. Esse clculo envolve dividir o tamanho total da malha
em uma direo pela quantidade de processos denidos para aquela mesma direo,
tamanho local nessa mesma direo, nxlocal, para cada processo ser a diviso de
Nx por npx. Quando a diviso no for exata, ela ir gerar um resto, esse resto ser
pear o seu subdomnio local para o domnio global. Portanto, deve ser determinado
24
matriz de dimenses (npx,npy ,npz ), sendo extremamente til para gerar e gravar o
entre os mesmos e tambm para o clculo da borda do modelo, pois se uma interface
de um processo no possui vizinho, logo uma borda. Cada processo mantm uma
lista com todos os seus vizinhos, que podem ser no mximo 6, conforme a Figura 3.8.
25
Figura 3.8: Vizinhana de um processo MPI.
liberado para prosseguir com sua execuo normal. Nessa comunicao utiliza-se
de entrega de cada mensagem enviada para que o buer de envio seja liberado para
com trs camadas paralelas. Nota-se que se o modelo de velocidades j estiver dis-
tribudo, essa leitura poderia ser feita em paralelo. No o caso do presente trabalho.
26
Figura 3.9: Modelo de velocidades com trs camadas paralelas.
subdomnio onde a fonte ssmica est localizada, pois somente o processo que contm
27
Figura 3.10: Mapeamento das coordenadas globais da fonte ssmica para as
coordenadas locais. Extrado de DE MEDEIROS LARA (2012).
trabalho, se a fonte for aplicada em um ponto (x, y, z) no interior dessa clula, ela
ser atribuda ao ponto (i, j, k) mais prximo, logo no ser necessrio replic-la
na partio vizinha. Uma outra possvel soluo seria aplicar uma ponderao
entre todos os ns dessa clula. Essa ponderao poderia ser calculada de forma
ponto da malha, totalizando 24 pontos vizinhos, como pode ser visto na Figura 3.11.
28
a
Figura 3.11: Stencil de 8 ordem. Extrado de BORGES e THIERRY (2016).
Cada processo calcula o campo de onda em cada ponto da malha de seu subdom-
nio no tempo t+1, utilizando valores do campo de onda de passos de tempo anteriores
do mesmo ponto da malha e dos seus vizinhos adjacentes, conforme esquema de dife-
Para a troca das informaes dos pontos da fronteira da malha, foi anexada
uma camada extra de buer nos subdomnios. Essa camada extra armazena as
fronteiras. Esse tamanho representa metade da ordem da aproximao, uma vez que
4 pontos posteriores, como pode ser visto no stencil da Figura 3.11. A Figura 3.12,
da malha na regio colorida dos subdomnios so enviadas para a regio cinza dos
29
Figura 3.12: Troca de mensagens entre processos vizinhos.
est sendo realizada, cada processo executa o clculo do campo de onda com a
gasta mais tempo que a comunicao entre os processos, assim foi possvel eliminar
30
Ao processar os pontos da fronteira, aps receber as informaes dos pontos
vizinhos, teve-se que tomar cuidado com as "quinas" para que um mesmo ponto no
fosse processado duas vezes, o que acarretaria num valor incorreto naquele ponto.
Por essa razo, foi denida uma geometria para processamento de cada fronteira,
Figura 3.13: Geometria dos subdomnios nas fronteiras onde topo e base so os
maiores segmentos pois esto contnuos na memria implicando num
processamento mais rpido.
pois esses segmentos ocupam espao contnuo de memria devido a forma como
ausncia de vizinho em alguma fronteira, com exceo do topo, uma vez que
a posio esquerda do arranjo ter o valor 1, isso signica que ele possui uma
borda esquerda que deve ser calculada utilizando a equao 2.25, isto , a condio
31
3.2.6 Gerao do sismograma
Apesar da modelagem ssmica nesse trabalho ser uma modelagem 3D, por ques-
mas 2D. Essa modelagem gera dois sismogramas, um no plano xz e outro no plano
os processos da supefcie do modelo que esto nesses planos, pois somente eles iro
32
Figura 3.14: Sismograma no plano xz com y = N y/2 para o modelo de velocidades
com trs camadas paralelas.
amplamente utilizados por muitos anos para computao de alto desempenho, MPI
partilhada.
33
compartilhada e distribuda, alm de permitir uma abordagem relativamente simples
3.3 Otimizaes
Nessa seo sero descritas algumas otimizaes implementadas no programa de
34
sendReqRight e recvReqRight, respectivamente buer de envio e buer de recebi-
mento para o vizinho da direita. Cada buer utilizado somente uma vez cada
passo de tempo, isso garante que no passo de tempo seguinte eles estaro liberados
vez de usar um buer interno. Isto elimina a necessidade de uma cpia na me-
mria no processo de recebimento, que pode ser bastante dispendioso para grandes
apenas dois arranjos so realmente necessrios, como pode ser visto na Figura 3.15,
onde t representa tempo e U o campo de presso. Nota-se que para calcular o campo
de presso em t + 1 necessria somente uma clula de Ut1 , logo esses dois arranjos
podem ser mesclados. Essa otimizao muito importante para reduzir a utiliza-
o de espao de memria, uma vez que domnios 3D, mesmo que particionados
35
Figura 3.15: Arranjos de campo de presso no tempos t 1, t, t + 1. Extrado de
ANDREOLLI (2016).
mensional por coluna. Por exemplo, seja um arranjo bidimensional com 3 linhas e
h i h i h i h i
(1, 1), (2, 1), (3, 1) , (1, 2), (2, 2), (3, 2) , (1, 3), (2, 3), (3, 3) , (1, 4), (2, 4), (3, 4)
Desta forma, o sistema percorre espaos contnuos de memria, o que muito mais
rpido do que dar saltos na memria a cada informao do arranjo que se deseja
Tendo em vista a forma como Fortran armazena arranjos na memria, foi feita
uma otimizao dos tamanhos dos segmentos processados aps a troca de informao
36
entre vizinhos, para que os maiores segmentos sejam aqueles que ocupam espao
nos segmentos que possuem memria contnua, deixando os menores segmentos onde
o sistema ter que fazer saltos na memria para obter o elemento desejado do arranjo.
Isso pode ser visto na gura que mostra a geometria dos subdomnios nas fronteiras
(Figura 3.13) onde os segmentos topo e base possuem o maior tamanho enquanto
todos os pontos da malha, portanto para clculo do campo de onda no tempo inicial
troca de informao dos pontos da fronteira dos subdomnios. Sendo assim, o loop
temporal possui (N total1) iteraes. Essa medida evita comunicao desnecessria
37
Captulo 4
Anlise de Desempenho
A seo 4.1 apresenta os perladores utilizados nesse trabalho, a seo 4.2 mostra
38
nho. Ela fornece acesso a informaes relacionadas com o OpenMP em tempo de
OpenMP. Ela dene uma interface padronizada para obter informaes a partir do
sobre o tempo de execuo do OpenMP para serem consultadas por uma ferramenta
de anlise.
maioria das construes, OMPT fornece o incio do evento que acionado quando
uma thread encontra uma construo e nal de evento quando ela termina a
execuo da construo. Alm disso, existem eventos para noticar uma ferramenta
quando threads ou tarefas so criadas, quando uma thread alterna entre a execuo
de duas tarefas, ou quando uma thread comea em espera ou acaba em espera em
dores existem como um pequeno conjunto de registros que contam eventos, que so
mapeamento desse cdigo para a arquitetura subjacente. Esta correlao tem uma
39
lao, bem como na orientao do desenvolvimento de arquiteturas no sentido de
como um nico contador, pode ser derivado utilizando uma combinao de conta-
tao pode ser inserida no cdigo fonte usando uma ferramenta de instrumentao
a API de instrumentao.
gem do TAU podem gerar inmeras informaes de desempenho. TAU pode mostrar
dos. Para entidades, ele mostra o fragmento de tempo gasto para cada instanciao.
Outros dados incluem quantas vezes cada funo foi chamada, quantas funes per-
ladas que cada funo invocou e qual foi a mdia do tempo inclusivo por chamada.
hardware.
TAU pode gerar rastreio de eventos que podem ser exibidos com as ferramentas
2006).
40
TAU no se limita a perlagem de cdigo MPI, foi projetado para perlagem de
nessa seo. Speedup (Sp ) utilizado para medir a melhoria na velocidade de exe-
cuo de uma tarefa em sistemas paralelos, sendo denido como a relao entre o
em paralelo, isto ,
T1
Sp =
Tp
fonte foi compilado juntamente com o TAU utizando o compilador da Intel (ifort)
com otimizao, opo -O3 de compilao. Foi utilizado tambm MVAPICH2 como
2016). A Stampede possui 6400 ns, onde cada n contm dois processadores Intel
Xeon E5 2.7GHz 8-core 64-bit (16 cores/n). Cada n contm 32GB de memria
41
constituindo uma topologia fat-tree de dois nveis (cores e folhas). Cada core possui
64KB de cache L1, sendo 32KB de dados e 32KB de instruo, tambm possui
256KB de cache L2 e cada CPU possui 20MB de cache L3. O TACC fornece um
script tacc_anity.
Inicialmente, a avaliao de desempenho foi realizada executando o programa
de modelagem ssmica com 8 processos MPI onde cada processo contm 16 threads
OpenMP. Foi utilizado um modelo de velocidade de uma nica camada de dimen-
500 passos de tempo. A Figura 4.1, gerada pelo Paraprof a partir de informaes
execuo enquanto que o clculo do stencil usa apenas 31,12% do tempo total. O
clculo do stencil deveria ocupar quase que todo tempo de execuo e a ociosidade
42
threads OpenMP, foi avaliado o desem-
Para diminuir o tempo de ociosidade das
43
Figura 4.2: Speedup para diferentes tipos de schedule do OpenMP.
Figuras 4.5, no conseguiu fazer uma distribuio muito boa do trabalho entre as
44
Figura 4.3: Distribuio das threads pelo tipo DY N AM IC .
45
Na tentativa de melhorar ainda mais a ecincia do OpenMP, foi adicionado a
schedule. Foi avaliado a unio dos loops para Y Z , COLLAP SE(2). A Tabela 4.2
e
o desempenho da clusula DY N AM IC .
DYNAMIC DYNAMIC
COLLAPSE 2
Threads Tempo (seg) Speedup Tempo (seg) Speedup
1 587,90 1,00 587,90 1,00
46
Figura 4.6: Speedup para diretiva COLLAP SE .
DY N AM IC funciona, cada thread deve fazer pelo menos uma chamada OpenMP
runtine toda vez que termina a execuo de uma iterao para obter outra. Sem
COLLAP E(2) so N z interaes do loop externo e as threads executam N y N x
iteraes (loops internos) antes de fazer uma nova solicitao para OpenMP runtine.
cada thread deve fazer uma nova solicitao aps realizar somente N x iteraes do
A Figura 4.9 mostra a diferena do tempo de espera das threads OpenMP entre
47
que o OpenMP tambm utilizado na aplicao das bordas, logo a estratgia de
48
(a) Cdigo inicial com static. Tempo (b) Cdigo alterado para dynamic. Tempo
mximo de espera de 8,647 segundos. mximo de espera de 3,503 segundos.
Aps melhorar o balanceamento de carga das threads, foi feita uma avaliao
presos esperando mensagens dos vizinhos. A Figura 4.10 conrma que a comunica-
M P I _W aitall.
49
Figura 4.10: Visualizao da linha de tempo de execuo para 20 passos de tempo
com 4 processos e 16 threads por processo onde pode ser visto ociosidade dos
processos (verde) aps o clculo do stencil (vermelho).
comunicao com computao, foi reservada uma thread OpenMP para realizar a
computao do stencil realizada com menos uma thread, de modo que a thread
Call MPI_Irecv ()
Call MPI_Irecv ()
Call MPI_Isend ()
! $OMP PARALLEL NUM_THREADS (2)
Call MPI_Isend ()
if ( threadId == 1) then
call ComputeWaveEquation ()
call ComputeWaveEquation ()
else
call MPI_Waitall ()
call MPI_Waitall ()
endif
! $OMP END PARALLEL
call UnpackMsgReceived ()
call UnpackMsgReceived ()
Algoritmo 4.1: Cdigo original
Algoritmo 4.2: Cdigo alterado
usando funes MPI no
usando thread dedicada para
bloqueantes.
comunicao.
50
O tempo gasto na computao dos pontos do ncleo do subdomnio pode ser
usado de forma assncrona para comunicar os valores dos pontos da fronteira antes
que a fase de clculo maior do que a fase de comunicao. Por essa razo, essa
avaliao foi realizada com 4 processos MPI para aumentar a carga de trabalho
modelagem uma vez que a comunicao acontece ao mesmo tempo que o clculo do
51
A ltima avaliao foi feita utilizando PAPI para medir vrias caractersticas do
Contador Valor
Operaes de ponto utuante 6.832E+05
compilado com o compilador Intel utilizando a opo -O3, isso faz com que o
52
Contador Antigo Novo Ganho
Operaes de ponto utuante 6.832E+05 7.302E+05 6,88%
unidimensional.
do k = startz , endz
do j = starty , endy
do i = startx , endx
next (i ,j , k ) = 2. * prev (i ,j , k ) - next (i ,j , k ) + &
c (i ,j , k ) * (3. * c0 * prev (i ,j , k ) + &
c1 * ( prev (i -1 ,j , k ) + prev ( i +1 ,j , k ) + &
prev (i ,j -1 , k ) + prev (i , j +1 , k ) + &
prev (i ,j ,k -1) + prev (i ,j , k +1)) + &
c2 * ( prev (i -2 ,j , k ) + prev ( i +2 ,j , k ) + &
prev (i ,j -2 , k ) + prev (i , j +2 , k ) + &
prev (i ,j ,k -2) + prev (i ,j , k +2)) + &
c3 * ( prev (i -3 ,j , k ) + prev ( i +3 ,j , k ) + &
prev (i ,j -3 , k ) + prev (i , j +3 , k ) + &
prev (i ,j ,k -3) + prev (i ,j , k +3)) + &
c4 * ( prev (i -4 ,j , k ) + prev ( i +4 ,j , k ) + &
prev (i ,j -4 , k ) + prev (i , j +4 , k ) + &
prev (i ,j ,k -4) + prev (i ,j , k +4)))
enddo
enddo
enddo
53
do k = startz , endz
do j = starty , endy
ptprev = > prev (: ,j , k )
ptnext = > next (: ,j , k )
do i = startx , endx
ptnext ( i ) = 2. * ptprev ( i ) - ptnext ( i ) + &
c (i ,j , k ) * (3. * c0 * ptprev ( i ) + &
c1 * ( ptprev (i -1) + ptprev ( i +1) + &
ptprev (i - nx ) + ptprev ( i + nx ) + &
ptprev (i - nx * ny ) + ptprev ( i + nx * ny )) + &
c2 * ( ptprev (i -2) + ptprev ( i +2) + &
ptprev (i -2* nx ) + ptprev ( i +2* nx ) + &
ptprev (i -2* nx * ny ) + ptprev ( i +2* nx * ny )) + &
c3 * ( ptprev (i -3) + ptprev ( i +3) + &
ptprev (i -3* nx ) + ptprev ( i +3* nx ) + &
ptprev (i -3* nx * ny ) + ptprev ( i +3* nx * ny )) + &
c4 * ( ptprev (i -4) + ptprev ( i +4) + &
ptprev (i -4* nx ) + ptprev ( i +4* nx ) + &
ptprev (i -4* nx * ny ) + ptprev ( i +4* nx * ny )))
enddo
enddo
enddo
arranjo unidimensional.
otimizado.
dade forte quando o tempo de execuo reduzido por um fator que inversamente
ser um quarto, e assim por diante. Logo, uma aplicao escalvel se o speedup
para n processadores um valor prximo de n.
A escalabilidade fraca descreve que, como o tamanho do problema e o nmero de
54
permanece constante, a velocidade de operaes por segundo de cada processador
vez que a relao entre o nmero de operaes e a quantidade de trabalho pode ser
rica do problema. Isso congura uma nova modelagem, diferente da inicial, logo no
trs execues da aplicao, quando algum dos valores de tempo de execuo era
muito maior ou muito menor que os outros dois, esse tempo era descartado, tomando-
se dos que sobravam o menor valor. Se os trs valores eram prximos, tomava-se o
menor.
gurao seria utilizar 1 processo MPI por n e todos os cores do n para as threads
OpenMP. Aqui ser avaliada a congurao processo/n e thread/processo que re-
sulta num melhor desempenho da aplicao. Essa congurao ser utilizada nas
valor mximo de processos possvel em cada n considerando uma thread por core,
uma vez que o programa de modelagem necessita de pelo menos 2 threads para a
2 threads.
55
Procs Ns Proc/N Threads/Proc Total threads Tempo (seg)
64 8 8 2 128 805,11
64 16 4 4 256 282,92
64 32 2 8 512 127,48
64 64 1 16 1024 125,27
Tabela 4.5: Execues do programa com um nmero xo de 64 processos MPI com
diferentes conguraes de ns e threads.
Nota-se que quando maior o nmero total de threads OpenMP mais rpido
realizado.
MPI, onde para o modelo hbrido com 1024 threads o programa executou em 125,27
segundos, j na verso puramente MPI com 1024 processos a execuo do programa
56
Distribuio No bloqueante Bloqueante
Processos npxnpynpz Tempo Speedup Tempo Speedup
1 111 516,66 1,00 483,09 1,00
57
no tempo total. Enquanto que para as rotinas bloqueantes, o custo de comunicao
acima de 50%. A primeira avaliao foi realizada com uma malha de tamanho
58
Figura 4.14: Grco de ecincia para malha de tamanho N x = N y = N z = 1024.
devido ao mau uso dos recursos da mquina. Isso ocorre devido ao tamanho de
1024 pontos em cada direo da malha no ser grande o suciente para sobrepor
59
Figura 4.15: Grco de speedup para malha de tamanho N x = N y = N z = 2048.
60
Aumentando o tamanho da malha, consequentemente, aumentando a carga de
particionamento com 64, 128 e 256 processos MPI. Assim como no teste anterior,
61
Figura 4.18: Grco de ecincia para malha de tamanho N x = N y = N z = 4096.
3 3
Os resultados de speedup e ecincia para as malhas de tamanho 1024 , 2048 e
3
4096 pontos mostraram que o programa de modelagem possui escalabilidade forte
modelo, melhor a ecincia. Isso acontece porque a medida que divide-se mais e
maiores, pode-se ter mais divises do domnio e ainda assim a carga de trabalho
Figuras 4.19, 4.20 e 4.21 mostram a execuo do programa com 64 processos MPI
3 3 3
para as malhas de 1024 , 2048 e 4096 pontos, onde pode ser visto o impacto da
7%.
62
Figura 4.19: Valores mximo de tempo de execuo para comunicao
(M P I _W aitall ) e clculo dostencil (OpenM P _LOOP ) para malha de tamanho
N x = N y = N z = 1024.
63
Captulo 5
Concluso e Trabalhos Futuros
mostrou que essa ociosidade era causada pelo desequilbrio de carga entre as threads.
Trocando o tipo de SCHEDU LE do loop OpenMP esse problema foi diminudo.
64
execues, independente da quantidade de processos e threads utilizados, produzem
o mesmo resultado.
lidade forte com melhor ecincia para malhas sucientemente grandes, pois assim o
Para essas mesmas condies, tambm foi mostrado que a implementao com ro-
ros, uma vez que na aquisio real so realizadas mltiplas emisses do pulso
ssmico (tiros);
cache;
65
Referncias Bibliogrcas
ABDELKHALEK, R., CALENDRA, H., COULAUD, O., et al., 2009, Fast Seismic
Modeling and Reverse Time Migration on a GPU Cluster, The 2009 High
Performance Computing & Simulation - HPCS'09.
ANDREOLLI, C., 2016. Eight Optimizations for 3-Dimensional Finite Dierence
//intel.ly/29yaUZx>.
ARAYA-POLO, M., RUBIO, F., DE LA CRUZ, R., et al., 2009, 3D Seismic Ima-
mcs.anl.gov/petsc>.
em: <http://openmp.org/wp/about-openmp/>.
BORGES, L., THIERRY, P., 2016. 3D Finite Dierences on Multi-core Proces-
articles/3d-finite-differences-on-multi-core-processors>.
66
CABEZAS, J., ARAYA-POLO, M., NAD NACHO NAVARRO, I. G., et al., 2009,
dary Condition for Discrete Acoustic and Elastic Wave Equation, Ge-
ophysics, v. 50, pp. 705708.
CHORLEY, M. J., WALKER, D. W., 2010, Performance analysis of a hybrid
em: <http://www.mpi-forum.org/>.
DONGARRA, J., FOSTER, I., FOX, G. C., et al., 2003, Sourcebook of Parallel
Computing. Morgan Kaufmann Publishers.
67
EBERLY, D., 2016. Derivative Approximation by Finite Dierences. Janeiro.
FiniteDifferences.pdf>.
GRANDJEAN, A., UAR, B., 2014, On Partitioning Two Dimensional Finite
68
LU, L., MAGERLEIN, K., 2013, Multi-level Parallel Computing of Reverse Time
MOCZO, P., KRISTEK, J., HALADA, L., 2004, The Finite-Dierence Method for
Seismologists. An Introduction. Bratislava, Comenius University.
MUFTI, I. R., 1990, Large-scale three-dimensional seismic models and their inter-
69
QAWASMEH, A., CHAPMAN, B., HUGUES, M., et al., 2015, GPU Technology
what-is-geophysics.aspx>.
SHENDE, S. S., MALONY, A. D., 2006, The TAU Parallel Performance Sys-
ncia.
ZHOU, M., 2014, Wave Equation Based Stencil Optimizations on Multi-core CPU.
Dissertao de Mestrado, Rice University.
70
ZHOU, X., 2013, Tiling Optimizations for Stencil Computations. Tese de Douto-
71