You are on page 1of 84

EXPLORANDO PARALELISMO HBRIDO NA PROPAGAO DA ONDA

ACSTICA 3D

Schirley Corra Jorge

Dissertao de Mestrado apresentada ao

Programa de Ps-graduao em Engenharia

Civil, COPPE, da Universidade Federal do

Rio de Janeiro, como parte dos requisitos

necessrios obteno do ttulo de Mestre em

Engenharia Civil.

Orientadores: Alvaro Luiz Gayoso de Azeredo

Coutinho

Jos Jernimo Camata

Rio de Janeiro

Setembro de 2016
EXPLORANDO PARALELISMO HBRIDO NA PROPAGAO DA ONDA

ACSTICA 3D

Schirley Corra Jorge

DISSERTAO SUBMETIDA AO CORPO DOCENTE DO INSTITUTO

ALBERTO LUIZ COIMBRA DE PS-GRADUAO E PESQUISA DE

ENGENHARIA (COPPE) DA UNIVERSIDADE FEDERAL DO RIO DE

JANEIRO COMO PARTE DOS REQUISITOS NECESSRIOS PARA A

OBTENO DO GRAU DE MESTRE EM CINCIAS EM ENGENHARIA

CIVIL.

Examinada por:

Prof. Alvaro Luiz Gayoso de Azeredo Coutinho, D.Sc.

Dr. Jos Jernimo Camata, D.Sc.

Prof. Luiz Landau, D.Sc.

Dr. Andr Bulco, D.Sc.

RIO DE JANEIRO, RJ  BRASIL

SETEMBRO DE 2016
Jorge, Schirley Corra

Explorando Paralelismo Hbrido na Propagao da

Onda Acstica 3D/Schirley Corra Jorge.  Rio de Janeiro:

UFRJ/COPPE, 2016.

XIII, 71 p.: il.; 29, 7cm.


Orientadores: Alvaro Luiz Gayoso de Azeredo Coutinho

Jos Jernimo Camata

Dissertao (mestrado)  UFRJ/COPPE/Programa de

Engenharia Civil, 2016.

Referncias Bibliogrcas: p. 66  71.

1. Modelagem Ssmica. 2. Anlise de Desempenho. 3.

MPI+OpenMP. 4. Multi-core. I. Coutinho, Alvaro Luiz

Gayoso de Azeredo et al. II. Universidade Federal do Rio

de Janeiro, COPPE, Programa de Engenharia Civil. III.

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

Gostaria de agradecer primeiramente a Deus por mais essa conquista em minha

vida.

Aos meus orientadores Prof. Alvaro Luiz G. de Azeredo Coutinho e Dr. Jos

Jernimo Camata pelos incentivos, ensinamentos e compreenso ao longo desse

trabalho.

Aos geofsicos Dr. Josias Jos da Silva e Bruno de Souza Silva pelas contribuies

e ajuda no entendimento dos conceitos da geofsica utilizados nesse trabalho.

Agradeo ao Texas Advanced Computing Center (TACC), da Universidade do

Texas em Austin por fornecer o supercomputador que foi essencial para a realizao

desse trabalho.

Agradeo a todo o corpo tcnico do NACAD/UFRJ, cujos computadores foram

essenciais para o incio dos meus estudos.

A minha prima Valdeni Andrelino e a Elizabeth da secretaria acadmica do PEC,

pela boa vontade e ajuda que foram essenciais para obter a documentao necessria

para efetivar a minha matrcula no PEC.

Agradeo a minha famlia e a minha grande amiga Maria Iracema P. dos Santos

pelo apoio e carinho.

A todos os meus amigos pelo apoio e pelos momentos de descontrao, em

especial ao meu amigo Ronaro Picoli pelo incentivo e amizade.

Enm, meu sincero agradecimento a todos aqueles que de uma forma ou de outra

contriburam para a realizao deste sonho!

v
Resumo da Dissertao apresentada COPPE/UFRJ como parte dos requisitos

necessrios para a obteno do grau de Mestre em Cincias (M.Sc.)

EXPLORANDO PARALELISMO HBRIDO NA PROPAGAO DA ONDA

ACSTICA 3D

Schirley Corra Jorge

Setembro/2016

Orientadores: Alvaro Luiz Gayoso de Azeredo Coutinho

Jos Jernimo Camata

Programa: Engenharia Civil

A modelagem precisa de propagao da onda ssmica em meios complexos

extremamente importante no processamento ssmico. Estes demandam muitos

recursos e tempo de processamento, portanto, precisam de sistemas paralelos

escalveis para produzir resultados em tempo hbil. Este trabalho descreve uma

implementao paralela de um modelo de propagao de onda acstica 3D, que


a
emprega o Mtodo de Diferenas Finitas (MDF) com aproximaes de 8 ordem

no espao e de segunda ordem no tempo. A implementao utiliza modelo

hbrido MPI/OpenMP onde a decomposio de domnio realizada via MPI

e o OpenMP usado para paralelizar o clculo do stencil em cada processo

MPI. Este trabalho tambm apresenta a anlise de desempenho do algoritmo de

propagao de onda utilizando ferramentas de medio de desempenho. Essas

ferramentas fornecem informaes sobre a eccia da estratgia de decomposio

de domnio, uso de paralelismo de threads e uso de unidades funcionais nos ncleos

computacionais. Aplicando os conhecimentos obtidos a partir do Tuning and

Analysis Utilities (TAU) e contadores de desempenho de hardware foi possvel

alterar a estratgia SCHEDULE OpenMP, aumentando o desempenho da aplicao

em 21%, sobrepor a comunicao com a computao, proporcionando um ganho

de desempenho de aproximadamente 9,70% e realizar otimizao do stencil, que

aumentou o desempenho do cdigo de modelagem ssmica em cerca de 7,30%. Todas

as otimizaes aumentaram o desempenho do cdigo em aproximadamente 50%.

Este trabalho tambm apresenta um estudo de escalabilidade, mostrando que o

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

requirements for the degree of Master of Science (M.Sc.)

EXPLORING HYBRID PARALLELISM IN 3D ACOUSTIC WAVE

PROPAGATION

Schirley Corra Jorge

September/2016

Advisors: Alvaro Luiz Gayoso de Azeredo Coutinho

Jos Jernimo Camata

Department: Civil Engineering

Accurate modeling of seismic wave propagation in complex media is extremely

important for many seismic processing algorithms. These algorithms are

computationally expensive, so they need scalable parallel systems to produce results

in a timely manner. This work describes a parallel implementation of a 3D acoustic

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

presents the wave propagation algorithm performance analysis using performance

measurement tools. These tools provide insights about the domain decomposition

strategy eectiveness, use of thread parallelism and use of the computational

functional unit cores. Applying the insights obtained from the Tuning and Analysis

Utilities (TAU) and hardware performance counters it was possible to change

the SCHEDULE OpenMP strategy, increasing by 21% application performance,

to overlap communication with computation, providing a performance gain of

approximately 9.70% and to perform stencil optimization, which increased the

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

suciently large meshes.

vii
Sumrio

Lista de Figuras x
Lista de Tabelas xiii
1 Introduo 1
2 Modelagem Ssmica 5
2.1 Equao da onda acstica . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Critrios para no disperso e estabilidade . . . . . . . . . . . . . . . 12

2.3 Fonte ssmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4 Bordas no-reexivas . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Paralelizao e Otimizao do Cdigo 17


3.1 Reviso de conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.1.1 Decomposio de domnio (DD) . . . . . . . . . . . . . . . . . 17

3.1.2 Message Passing Interface (MPI) . . . . . . . . . . . . . . . . 19

3.1.3 Open Multi-Processing (OpenMP) . . . . . . . . . . . . . . . 20

3.2 Implementao paralela . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Decomposio de domnio com MPI . . . . . . . . . . . . . . . 22

3.2.2 Distribuio do modelo de velocidade . . . . . . . . . . . . . . 26

3.2.3 Identicao do processo que contm a fonte . . . . . . . . . . 27

3.2.4 Clculo do campo de onda . . . . . . . . . . . . . . . . . . . . 28

3.2.5 Aplicao das bordas . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.6 Gerao do sismograma . . . . . . . . . . . . . . . . . . . . . 32

3.2.7 Paralelizao hbrida com OpenMP/MPI . . . . . . . . . . . . 33

3.3 Otimizaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4 Anlise de Desempenho 38
4.1 Ferramentas de perlagem . . . . . . . . . . . . . . . . . . . . . . . . 38

4.1.1 OpenMP Tools (OMPT) . . . . . . . . . . . . . . . . . . . . . 38

4.1.2 Performance Application Programming Interface (PAPI) . . . 39

4.1.3 Tuning and Analysis Utilities (TAU) . . . . . . . . . . . . . . 40

viii
4.2 Anlise de perlagem . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.3 Avaliao de escalabilidade . . . . . . . . . . . . . . . . . . . . . . . . 54

5 Concluso e Trabalhos Futuros 64


Referncias Bibliogrcas 66

ix
Lista de Figuras

2.1 Levantamento ssmico martimo. 1- Fonte ssmica, 2- Reexo da

energia ssmica na interface geolgica, 3- Hidrofones que captam a

energia reetida, 4- Navio ssmico. Extrado de SERCEL (2016). . . . 5

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). 6

2.3 Derivada segunda da Gaussiana para uma frequncia de corte de 60

Hz. Extrado de BULCO (2004). . . . . . . . . . . . . . . . . . . . . 13

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. . . . . . . . . . . . . . . . . . . . . . . 18

3.2 Fluxograma do programa paralelo. . . . . . . . . . . . . . . . . . . . 22

3.3 (a)Partio na direo z, (b)Partio na direo x, (c)Partio na

direo y. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.4 (a)Partio nas direes z e x, (b)Partio nas direes z e y,


(c)Partio nas direes x e y. . . . . . . . . . . . . . . . . . . . . . . 23

3.5 Partio do domnio nas direes x, y e z. . . . . . . . . . . . . . . . 23

3.6 Tamanho global do domnio e tamanho das parties em cada dimenso. 24

3.7 Topologia de distribuio dos processos MPI. . . . . . . . . . . . . . . 25

3.8 Vizinhana de um processo MPI. . . . . . . . . . . . . . . . . . . . . 26

3.9 Modelo de velocidades com trs camadas paralelas. . . . . . . . . . . 27

3.10 Mapeamento das coordenadas globais da fonte ssmica para as

coordenadas locais. Extrado de DE MEDEIROS LARA (2012). . . . 28


a
3.11 Stencil de 8 ordem. Extrado de BORGES e THIERRY (2016). . . . 29

3.12 Troca de mensagens entre processos vizinhos. . . . . . . . . . . . . . . 30

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. . . . . . . . . . . . . . . . . . . . . . . . 31

3.14 Sismograma no plano xz com y = N y/2 para o modelo de velocidades


com trs camadas paralelas. . . . . . . . . . . . . . . . . . . . . . . . 33

x
3.15 Arranjos de campo de presso no tempos t 1, t, t + 1. Extrado de

ANDREOLLI (2016). . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.1 Perlagem inicial da modelagem executada com 8 processos MPI e

16 threads OpenMP por processo. . . . . . . . . . . . . . . . . . . . . 42

4.2 Speedup para diferentes tipos de schedule do OpenMP. . . . . . . . . 44

4.3 Distribuio das threads pelo tipo DY N AM IC . . . . . . . . . . . . . 45

4.4 Distribuio das threads pelo tipo GU IDED . . . . . . . . . . . . . . 45

4.5 Distribuio das threads pelo tipo ST AT IC . . . . . . . . . . . . . . . 45

4.6 Speedup para diretiva COLLAP SE . . . . . . . . . . . . . . . . . . . 47

4.7 Resultado da perlagem do cdigo alterado para a estratgia

DY N AM IC executado com 8 processos MPI e 16 threads OpenMP

por processo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.8 Resultado da perlagem do cdigo inicial com a estratgia ST AT IC


executado com 8 processos MPI e 16 threads OpenMP por processo. 48

4.9 Tempo total de espera de cada thread em

OpenMP_WAIT_BARRIER. . . . . . . . . . . . . . . . . . . . . . . 49

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). 50

4.11 Visualizao da linha de tempo de execuo para 20 passos de tempo

com 4 processos e 16 threads por processo aps deixar uma thread


dedicada para comunicao onde pode ser vista a sobreposio da

comunicao (verde) com o clculo do stencil (vermelho). . . . . . . . 51

4.12 Grco de speedup para rotinas MPI bloqueantes e no bloqueantes. 57

4.13 Grco de speedup para malha de tamanhoN x = N y = N z = 1024. . 58

4.14 Grco de ecincia para malha de tamanho N x = N y = N z = 1024. 59

4.15 Grco de speedup para malha de tamanho N x = N y = N z = 2048. . 60

4.16 Grco de ecincia para malha de tamanho N x = N y = N z = 2048. 60

4.17 Grco de speedup para malha de tamanho N x = N y = N z = 4096. . 61

4.18 Grco de ecincia para malha de tamanho N x = N y = N z = 4096. 62

4.19 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 = 1024. . . . . . . . . . . . . . . . . . . 63

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

4.1 Desempenho de diferentes tipos de schedule do OpenMP. Tempo

medido em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2 Desempenho da diretiva COLLAP SE . . . . . . . . . . . . . . . . . . 46

4.3 Valores de contadores de desempenho de hardware para clculo do

stencil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.4 Comparao dos valores de contadores de desempenho de hardware

para clculo do stencil nas duas implementaes. . . . . . . . . . . . 53

4.5 Execues do programa com um nmero xo de 64 processos MPI

com diferentes conguraes de ns e threads. . . . . . . . . . . . . . 56

4.6 Valores de speedup para rotinas MPI bloqueantes e no bloqueantes.

Tempo medido em segundos. . . . . . . . . . . . . . . . . . . . . . . . 57

4.7 Valores de speedup e ecincia para malha de tamanho Nx = Ny =


N z = 1024. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

4.8 Valores de speedup e ecincia para malha de tamanho Nx = Ny =


N z = 2048. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.9 Valores de speedup e ecincia para malha de tamanho Nx = Ny =


N z = 4096. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

xiii
Captulo 1
Introduo

A indstria do petrleo mobiliza somas gigantescas de recursos econmicos e

humanos para sustentar as operaes de explorao e produo de leo e gs. O

petrleo transformou a vida da humanidade ponto de se tornar um bem estratgico

para a segurana nacional dos pases mais importantes do mundo. Para pases

perifricos ou emergentes fator crtico de desenvolvimento possuir reservas de leo

e gs bem como dominar tecnologias para sua produo (THOMAS, 2004).

As companhias de petrleo enfrentam o desao de encontrar reservas de leo e

gs em estruturas geolgicas cada vez mais complexas. O mtodo ssmico de ree-

xo atualmente o mtodo para prospeco mais utilizado pela indstria de leo e

gs, revelando as propriedades fsicas do interior da Terra. O levantamento ssmico

fornece alta denio da estrutura geolgica da subsuperfcie, possibilitando a iden-

ticao de uma rea favorvel acumulao de petrleo a um custo relativamente

baixo. Segundo THOMAS (2004), mais de 90% dos investimentos em prospeco

so aplicados em ssmica de reexo.

Nos levantamentos ssmicos terrestres e martimos so utilizadas fontes articiais

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

at o receptor, registrando essas informaes sob a forma de um conjunto de traos

ssmicos, chamado de sismograma (DE SOUZA SILVA, 2014).

O fenmeno fsico da propagao de ondas ssmicas pode ser descrito atravs de

modelos matemticos e sua simulao numrica denominada Modelagem Ssmica.

A modelagem ssmica uma rea de pesquisa signicativa na indstria de petrleo.

A modelagem da equao da onda til para a compreenso de problemas de ima-

geamento complexos, para testes de processamento e algoritmos, para inverso da

forma da onda e para processos de migrao. O objetivo da modelagem ssmica

tambm validar o modelo geolgico atravs da comparao do dado sinttico com o

dado de campo.

1
O modelo matemtico adotado nesse trabalho a equao da onda acstica,

que fornece resultados satisfatrios em muitas aplicaes na indstria de petrleo.

A simulao numrica tridimensional (3D). Como mtodo numrico utiliza-se o

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-

deravelmente. Mas aplicaes como modelagem ssmica precisam de recursos com-

putacionais muito maiores que um computador sequencial pode proporcionar. O

processamento paralelo fornecido pelos sistemas de computao de alto desempenho

tem mostrado ser uma soluo eciente para melhorar o desempenho de aplicaes

que demandam alto custo computacional. O paralelismo a chave para melho-

rar o desempenho nesses sistemas, dessa forma, algoritmos paralelos ecientes so

essenciais.

Sistemas de computao de alto desempenho hoje em dia so exclusivamente do

tipo memria distribuda no nvel geral do sistema, mas utilizam memria compar-

tilhada a nvel de ns de computao, sistemas hbridos, inclusive com aceleradores.

A lista dos 500 maiores supercomputadores do mundo, TOP500 (MEUER et al.,


2016), de junho de 2016 mostrou que 86,2% dos computadores da lista foram classi-

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

(HAGER e WELLEIN, 2010). Combinar MPI e OpenMP para criar aplicaes h-

bridas de troca de mensagem e memria compartilhada um passo lgico quando

se utiliza clusters multi-core.

Message Passing Interface (MPI) o padro para programao paralela de troca

de mensagens para memria distribuida, oferecendo uma biblioteca com uma inter-

face padro que promove a portabilidade do cdigo paralelo. Open Multi-Processing

(OpenMP) o padro para programao paralela de memria compartilhada, ofe-

recendo um mtodo simples, mas poderoso, de especicar a distribuio de trabalho

entre threads. No modelo de programao hbrido MPI/OpenMP utiliza-se MPI

para a comunicao entre os ns e OpenMP para paralelizao dentro do n. A

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-

grama OpenMP puro.

Sistemas multi-core e de memria compartilhada tem sido explorados em vrios

trabalhos bem sucedidos para paralelizar Migrao Reversa no Tempo (em ingls,

Reverse Time Migration, RTM). ABDELKHALEK et al. (2009) e CABEZAS et al.


(2009) utilizam CUDA para obter vantagem do poder computacional das GPUs

na paralelizao, enquanto ARAYA-POLO et al. (2009) paralelizam a computao

2
atravs dos cores. QAWASMEH et al. (2015) utilizam um modelo hbrido com

MPI/OpenACC, onde o OpenACC empregado para programao na GPU e o

MPI para distribuir o processamento atravs dos ns computacionais. J LU e

MAGERLEIN (2013) empregam um modelo hbrido MPI/OpenMP, utilizando o

MPI para distribuir o trabalho atravs dos ns e o OpenMP para a paralelizao

dentro do n.

Conseguir comunicao eciente com a utilizao de modelos de programao

hbridos um desao. BUETTNER et al. (2013) abordaram a questo da sobrepo-


sio de comunicao com computao movendo a fase de comunicao para uma

tarefa que executada pelo OpenMP juntamente com a computao sem afetar o

balanceamento das threads. VAIDYANATHAN et al. (2015) atingiram a sobreposi-


o com uma infra-estrutura MPI que utiliza uma thread de comunicao dedicada

em nvel de biblioteca. Nesta abordagem, as chamadas MPI so enleiradas como

tarefas de comunicao que so processadas pela thread de comunicao dedicada.

PAUL et al. (2015) utilizaram uma thread OpenMP de comunicao dedicada para
solucionar a questo da sobreposio.

Melhorar o desempenho de aplicaes complexas em um ambiente de memria

distribuda difcil. PAUL et al. (2016) descrevem o processo de ajuste de desem-


penho de uma aplicao de RTM hbrida MPI/OpenMP utilizando ferramentas de

anlise de desempenho. Em PHADKE e RAMANJULU (2011) a anlise de desem-

penho de uma aplicao de modelagem ssmica 3D paralelizada com MPI utiliza

diferentes tamanhos de modelos para mostrar escalabilidade e ecincia do algo-

ritmo. CHORLEY e WALKER (2010) realizam anlise de desempenho de uma

aplicao cientca comparando uma implementao puramente MPI versus a im-

plementao hbrida MPI/OpenMP mostrando que para um nmero signicativo de

cores a aplicao hbrida tem melhor desempenho.

Alguns trabalhos obtiveram sucesso focando o ganho de desempenho em otimi-

zao do stencil empregado nos algoritmos com malha, como a modelagem ssmica.

Em ZHOU (2014) so empregadas tcnicas computacionais que exploram a arqui-

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

desempenho para stencils de mdia e alta ordem reduzindo, os acessos a dados e

aumentando o reuso dos mesmos.

Nesse trabalho proposta a implementao de uma aplicao hbrida de propa-

gao da onda acstica 3D. O algoritmo utiliza MPI com funes no bloqueantes

para decompor o domnio e distribuir a carga entre os processos, enquanto emprega

OpenMP para paralelizar o clculo do campo de onda dentro de cada processo.

O desempenho desse algoritmo explorado utilizando mtodos de anlise de

desempenho que incluem identicar gargalos (bottlenecks) com a utilizao de fer-

3
ramentas de perlagem, denir uma soluo para os problemas encontrados e im-

plementar cada soluo. Alm disso, procura-se otimizar o algoritmo de modelagem

ssmica 3D para fornecer desempenho mximo, com um mnimo de interveno no

cdigo, no se utilizando diretivas especcas de um determinado compilador, para

garantir portabilidade ao algoritmo.

Sendo assim, esta dissertao est organizada da seguinte forma:

O captulo 2 fornece um breve resumo da aquisio e modelagem ssmica. Apre-

senta ainda a discretizao da equao da onda acstica pelo Mtodo das Diferenas

Finitas (MDF).

O captulo 3 descreve a implementao da aplicao hbrida de modelagem, expli-

cando a diviso de domnio adotada e a comunicao entre os processos. Apresenta

tambm otimizaes realizadas durante a implementao.

No captulo 4 realizada a anlise de desempenho. So apresentadas as ferra-

mentas utilizadas e os resultados que elas forneceram. Com base nesses resultados

so aplicadas otimizaes no cdigo. Ser apresentada a melhora de desempenho

associada a cada otimizao realizada. Apresenta-se tambm um estudo de escala-

bilidade forte e fraca.

O captulo 5 conclui esta dissertao com um resumo do que foi feito e prope

idias para possveis trabalhos futuros.

4
Captulo 2
Modelagem Ssmica

Em levantamento ssmico, as ondas sonoras so mecanicamente geradas e

enviadas para a Terra (Figuras 2.1 e 2.2). Parte dessa energia reetida de volta

para sensores de gravao, isto , dispositivos de medio que registram com

preciso a intensidade desta energia e o tempo que esta viaja atravs das vrias

camadas na crosta da Terra e volta para as localizaes dos sensores. Usando

processamento de dados ssmicos especializado, essas gravaes so transformadas

em imagens visuais da subsuperfcie da terra na rea do levantamento ssmico. Os

geofsicos ento usam o levantamento ssmico para obter uma imagem da estrutura

e a natureza das camadas de rocha indiretamente (IOGP, 2016).

Figura 2.1: Levantamento ssmico martimo. 1- Fonte ssmica, 2- Reexo da


energia ssmica na interface geolgica, 3- Hidrofones que captam a energia
reetida, 4- Navio ssmico. Extrado de SERCEL (2016).

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,

desenvolvimento e produo de reservas de petrleo e gs para mapear o potencial

e formaes contendo hidrocarbonetos e as estruturas geolgicas que os cercam.

A modelagem ssmica uma tcnica para simular a propagao da onda no

interior da Terra, onde aplica-se uma fonte em um dado ponto do modelo e utilizando

uma das equaes de propagao de ondas discretizada, calculam-se as presses,

campos de velocidade e tenses clula clula, propagando a excitao inicial gerada

pela fonte para as clulas do modelo.

O processo de modelagem permite a obteno de fotograas (snapshots) do

campo de ondas em qualquer instante. Alm disso, tambm gera os sismogramas

onde aparecem as reexes nas interfaces dos modelos, provenientes da passagem das

ondas ssmicas atravs das interfaces entre materiais geolgicos de impedncia acs-

tica diferentes. Impedncia acstica de um material a resistncia ou diculdade

que o material ope passagem do som.

Segundo DOS SANTOS e FIGUEIR (2006), a simulao numrica da onda

pode ser usada para formulao da inverso ssmica no-linear, processos de mi-

grao ssmica, auxlio a interpretao ssmica de regies com geologia complexa e

gerao de dados para testes em algoritmos de processamento ssmico.

Neste trabalho, ser realizada a modelagem ssmica para um meio acstico 3D,

cuja propagao do campo de presso em seu interior regida pela equao da

onda acstica, que ser discretizada pelo Mtodo das Diferenas Finitas (MDF).

6
Nas sees seguintes essa equao ser apresentada, bem como sua discretizao e

os demais artifcios requeridos para a realizao da modelagem ssmica, tais como a

aplicao da fonte ssmica, o uso de bordas no-reexivas e critrios de no disperso

e estabilidade numrica.

2.1 Equao da onda acstica


A equao da onda acstica uma equao diferencial parcial de segunda ordem,

e que pode ser obtida por meio da aplicao das leis de Newton e Hooke, que

relacionam a presso do campo de ondas e a velocidade do meio, resultando na

equao a seguir:

2U 2U 2U 1 2U
+ + = f (t)(r r0 ) (2.1)
x2 y 2 z 2 V 2 t2

onde U o campo de presso da onda que varia em funo de x, y, z e t, V (x, y, z)


a velocidade de propagao do meio, f (t) representa a fonte ssmica aplicada na

coordenada r0 (x, y, z) e o delta de Dirac.

A equao da onda sozinha no especica uma soluo. Para que o problema

de propagao de onda tenha soluo, necessrio estabelecer condies inicias e

condies de contorno. As condies de contorno sero denitas posteriormente.

Como condio inicial, na modelagem, assume-se que o campo de presso e sua

primeira derivada em relao ao tempo sejam nulos para o tempo inicial t = 0.




U (x, y, z, 0) = 0

U (x, y, z, 0) = 0



t

O Mtodo das Diferenas Finitas (MDF) um dos mais importantes mtodos

numricos em sismologia, isto devido ao fato de que aplicvel aos modelos com-

plexos, relativamente preciso e eciente computacionalmente. Alm disso, re-

lativamente fcil de codicar, permitindo paralelizao pelo fato dos operadores de

diferenas nitas (DF) serem locais (MOCZO et al., 2004).


Neste trabalho, o MDF foi aplicado utilizando o conceito desenvolvido em

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

onde p > 0 a ordem do erro, O(hd+p ) o termo que descartado na aproximao,

imax = imin = b(d + p 1)/2c e C


o vetor de pesos denido pela equao:

iX
(
max
0, 0nd+p1 e n 6= d
i n Ci = (2.3)
i=imin 1, n=d

A equao 2.3 fornece um conjunto de d+p1 equaes lineares, logo n =


0, 1, ..., [d + p 1] 1.
Como j mencionado anteriormente, a equao da onda acstica uma equao

diferencial de segunda ordem (d = 2), que ser discretizada com aproximao de

oitava ordem para as derivadas espaciais, com erro da ordem p = 8. Dessa forma,

tem-se imax = imin = 4 e n = 0, ..., 8.


Com as informaes acima possvel montar o sistema linear a partir da equa-

o 2.3 para o clculo do vetor peso C:



1 1 1 1 1 1 1 1 1 C4 0
4 3 2 1 0 1 2 3 4 C3 0


16 9 4 1 0 1 4 9 16 C2 1

64 27 8 1 0 1 8 27 64 C1 0


256 81 16 1 0 1 16 81 256 C0 = 0

1024 243 32 1 0 1 32 243 1024 C1 0


4096 729 64 1 0 1 64 729 4096 C2 0

16384 2187 128 1 0 1 128 2187 16384 C3 0

65536 6561 256 1 0 1 256 6561 65536 C4 0

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

Substituindo a soluo encontrada para o vetor C na equao 2.2, obtm-se uma


expresso geral com aproximao de oitava ordem para a segunda derivada parcial

da funo F (x), dada por:

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)

A derivada temporal da equao da onda ser discretizada com aproximao

de segunda ordem, com erro de ordem p = 2, imax = imin = 1 e n = 0, 1, 2.


Utilizando operaes semelhantes discretizao das derivadas espaciais, obtm-se

uma expresso geral com aproximao de segunda ordem para a segunda derivada

parcial da funo F (t):

1
F (2) (t) = [F (t t) 2F (t) + F (t + t)] (2.5)
(t)2

Na modelagem pelo MDF, utiliza-se uma malha de espaamento regular para

subdividir os eixos x, y, z em x, y e z , respectivamente. Dessa forma, um

ponto genrico P (x, y, z) da malha pode ser expresso de forma discretizada como

sendo (DA SILVA, 2009):

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

t0 , a soluo da equao da onda dever ser calculada em intervalos sucessivos de

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

ondeU (x, y, z, t) representa o valor do campo de presso em uma posio (i, j, k) da


malha em um tempo n.

Introduzindo a notao de ndice nas equaes de aproximao 2.4 e 2.5, as

derivadas parciais da equao acstica 2.1, podem ser expressas como:

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

representam posies anteriores. O mesmo acontece para as direes y e z . O ndice

n est relacionado com o tempo, logo n + 1 representa o passo de tempo futuro, n


o passo atual e n 1 o passo de tempo anterior.

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

valor do campo de onda no passo de tempo futuro para uma posio x, y, z :

 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 )

No presente trabalho, adota-se uma malha regular, ou seja h = x = y = z ,


 2
Vi,j,k t
toma-se uma constante Ci,j,k = , assim possvel simplicar a equao 2.10
h
da seguinte forma:

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 )

A equao 2.11 representa a equao da onda acstica para 3 dimenses discreti-

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.

Nota-se que o lado direito da equao 2.11 s depende de valores conhecidos do

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

em tn e tn1 . Mtodos explcitos, em geral, so condicionalmente estveis e devem

satisfazer uma condio de estabilidade (DE OLIVEIRA FORTUNA, 2000).

2.2 Critrios para no disperso e estabilidade


O MDF, por ser um mtodo aproximado, possui um erro intrnseco sua solu-

o, que pode inuenciar no resultado nal da modelagem. A disperso numrica

causada em virtude das discretizaes realizadas, que fazem com que as ondas

propaguem com velocidades e frequncias distintas. Este problema geralmente se

manisfesta gerando oscilaes intermitentes na forma temporal do pulso ssmico.

Para minimizar a disperso numrica, MUFTI (1990) estabeleceu uma relao

que envolve o comprimento da malha, velocidade de propagao e frequncia, ma-

tematicamente descrita por:

Vmin
h (2.12)
fmax

onde, h o espaamento da malha uniforme (h = x = y = z ), Vmin a


menor velocidade registrada no modelo, fmax a frequncia mxima, o nmero

mximo de intervalos de tempo por comprimento de onda (empiricamente, o valor

timo encontrado foi = 5, conforme pode ser visto em FARIA (1986)).

O conceito de estabilidade est relacionado ao crescimento dos erros introduzidos

no clculo (FLETCHER, 1992). O acmulo desses erros pode ser evitado impondo-

se condies que garantem que o mtodo numrico seja estvel.

Em geral, mtodos explcitos apresentam um limite superior no valor de t que

pode ser utilizado. O clculo desse limite para o problema de propagao da onda

foi proposto, entre outros, por MUFTI (1990), que estabeleceu:

h
t (2.13)
Vmax

onde, t o intervalo de tempo da amostragem, h o espaamento da malha

calculado na equao 2.12, Vmax a maior velocidade registrada no modelo, o

nmero mximo de intervalos de tempo por comprimento de onda (empiricamente,

o valor timo encontrado foi = 5 (FARIA, 1986)).

12
2.3 Fonte ssmica
A fonte ssmica modelada por uma funo matemtica e nesta dissertao

emprega-se a derivada segunda da funo Gaussiana (CUNHA, 1997),

2
f (t) = [1 2(fc t)2 ]e(fc t) (2.14)

onde fc um parmetro relacionado com a frequncia mxima ao qual o modelo

numrico est sujeito, denominada frequncia de corte (fcorte ), onde:

fcorte
fc = (2.15)
3
A funo fonte ser discretizada conforme a equao 2.16 com o objetivo de se

obter somente valores positivos de t:

t = (n 1)t T F (2.16)

onde n o nmero do passo de tempo do algoritmo, t o passo de tempo e TF

o perodo da funo Gaussiana dado pela equao:


2
TF = (2.17)
fc

A Figura 2.3 representa a funo para a fonte ssmica expressa pela segunda

derivada da Gaussiana para o caso em que a frequncia de corte corresponde a 60 Hz.

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

innito, mas devido ao custo computacional necessrio introduzir limites articiais

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

bordas, assume-se condies de contorno que procuram reproduzir na modelagem

os efeitos do uso de um meio innito.

Um conceito bastante utilizado na modelagem numrica a condio de contorno

no-reexiva, proposta por REYNOLDS (1978). Esta condio se baseia na premissa

de que as ondas atingem as partes mais afastadas do modelo na forma de ondas

planas. Assim, para uma onda plana propagando-se para a direita do modelo, tem-

se a seguinte condio de borda:

 1 
+ U (x, y, z, t) = 0 (2.18)
x V t

Para uma onda plana propagando-se para a esquerda:

 1 
U (x, y, z, t) = 0 (2.19)
x V t

Utilizando a notao de ndices, a condio de borda no reexiva para a esquerda

do modelo pode ser expressa por:

 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)

Analogamente pode-se obter os operadores do campo de onda para n+1 nas

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)

As equaes acima podem ser representadas de forma discretizada pelo MDF

com aproximao de primeira ordem da seguinte forma:

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

(j = 1, 2, ..., N y; k = 1, 2, ..., N z; n = 0, 1, 2, ...)

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

deseja simular o contato com a superfcie livre terra-ar ou gua-ar.

Uma outra soluo bastante utilizada para minimizar o problema de reexes

nas bordas, a implementao de uma camada de amortecimento, que atenua a

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

No captulo anterior foi apresentada a forma discretizada da equao da onda

acstica 3D. A discretizao foi realizada pelo MDF com aproximao de oitava

ordem para as derivadas espaciais e segunda ordem para a derivada temporal.

A modelagem 3D aliada a alta ordem da discretizao demandam um altssimo

custo computacional. Com o objetivo de minimizar esse trabalho computacional

so empregadas tcnicas de paralelizao e otimizao do algortmo de propagao

da onda. A implementao paralela do algortmo baseada em Decomposio de

Domnio, utilizando programao paralela hbrida com MPI e OpenMP.

3.1 Reviso de conceitos


3.1.1 Decomposio de domnio (DD)
Resolver problemas de grande escala em computao paralela com memria dis-

tribuda geralmente exige que os dados do problema sejam particionados de alguma

maneira entre os processadores. A decomposio de domnio uma tcnica que

consiste em dividir o domnio computacional em subdomnios, os quais podem ser

resolvidos em diferentes processadores de forma concorrente. Tcnicas de decom-

posio de domnio so uma maneira natural de fazer bom uso de computadores

paralelos.

Em muitos problemas de simulaes cientcas o MDF usado para aproximar

solues de equaes diferenciais parciais em um domnio fsico computacional sob

a forma de uma malha. Nessas simulaes, o clculo involve as interaes de cada

ponto da malha com seus vizinhos imediatos. A execuo eciente dessas simulaes

em mquinas de memria distribuda exige um mapeamento da malha computacio-

nal para os processadores, buscando o balanceamento do nmero de clulas da malha

17
atribudas a cada processador e minimizando a comunicao entre processadores, que

necessria para realizar a troca de informaes entre clulas adjacentes. Tal ma-

peamento comumente encontrado resolvendo um problema de particionamento de

grafo.

De modo a calcular um mapeamento de uma malha para um conjunto de proces-

sadores atravs de particionamento de grafo, primeiramente necessrio construir

o grafo que modela a estrutura do clculo. Em geral, o clculo de uma simulao

cientca pode ser realizada nos ns da malha, nas clulas da malha, ou em ambos.

Se o clculo realizado principalmente nos ns da malha, ento este grco simples

de construir. Nesse grafo existe um vrtice para cada n da malha e uma aresta

entre os ns adjacentes, chamado grafo nodal. No entanto, se o clculo realizado

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

clulas particionado em 2 subdomnios.

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.

Particionar os vrtices deste grafo em k subdomnios disjuntos fornece um mape-

amento tanto dos ns da malha quanto das clulas da malha em k processadores. Na

partio do domnio por clula, como mostrado na Figura 3.1 (c), um determinado

ponto do domnio pertence somente a um processo, ou seja, no compartilhado

entre os processos vizinhos.

Algoritmos que encontram bons particionamentos de grafos so crticos para

a execuo eciente das simulaes cientcas em computadores paralelos de alto

desempenho. Em DONGARRA et al. (2003) so apresentados alguns tipos de al-

18
gortmos para particionamento de grafos e as tcnicas empregadas por eles. O foco

aqui, no entanto, so algoritmos de particionamento paralelo de grafos empregando

tcnicas de particionamento cartesiano.

Um dos mtodos de particionamento mais simples o mtodo de partio car-

tesiana. Dada uma malha 2D de tamanho XY para ser dividida entre P Q


processadores, este mtodo particiona as coordenadas x e y, respectivamente, em

P 1 e Q1 planos, onde os planos de particionamento de cada coordenada so

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).

Para problemas de simulao de propagao da onda, a decomposio de dom-

nio realizada no espao, apesar do domnio computacional ser representado pelo

tempo e espao. Segundo MINKOFF (2002), o paralelismo espacial proporciona

uma estratgia altamente eciente para paralelizao de simulaes em diferenas

nitas. Dessa forma, os subdomnios so regies do espao tridimensional da malha

de diferenas nitas, representados pelo campo de presso e pelo modelo de velo-

cidades, que sero processados concorrentemente por diferentes processadores para

resolver a equao diferencial. O modelo de velocidades representa o conjunto de

valores das velocidades em cada ponto da malha.

A implementao paralela da decomposio de domnio realizada via Message

Passing Interface (MPI), conforme mostrado em seguida.

3.1.2 Message Passing Interface (MPI)


Message Passing Interface (MPI) (COMMITTEE, 2016) uma especicao para

operaes de troca de mensagem. MPI atualmente uma soluo padro para

desenvolvimento de aplicaes paralelas para arquitetura de memria distribuida.

A sintaxe do MPI padronizada e pode ser executada em plataformas de memria

compartilhada ou memria distribuida.

MPI dene cada unidade de execuo como um processo, cada processo tem

seu prprio espao de endereo local. Processos cooperam para realizar uma tarefa

executando seus dados locais independentemente e comunicando dados com outros

processos por troca explcita de mensagem (HEMPEL e WALKER, 1999). Opera-

es de troca de mensagens podem ser ponto--ponto ou coletivas (globais), todas

com escopo para um grupo de processos especicado pelo usurio. Alm disso, MPI

fornece abstraes para processos em dois nveis. Em primeiro lugar, os processos

so nomeados de acordo com a classicao do grupo em que a comunicao est

19
sendo realizada. Em segundo lugar, topologias virtuais permitem mapeamento de

grafo ou cartesiano de processos, que ajudam a relacionar a semntica de aplica-

es com a semntica de troca de mensagens de uma forma conveniente e eciente

(GROPP et al., 1996).


A vantagem de usar o MPI devida a sua sintaxe padronizada, que garante que o

cdigo MPI ir executar em qualquer implementao MPI. Alm disso, o comporta-

mento funcional das chamadas MPI tambm padronizado, logo, as chamadas MPI

devem ter o mesmo comportamento, independentemente da implementao, garan-

tindo assim a portabilidade dos programas paralelos. Entretando, o desenpenho

pode variar de implementao para implementao (YANG et al., 2011).


Neste trabalho utilizado MVAPICH2 (OSU, 2016), uma implementao do

padro MPI desenvolvido pela Ohio State University.

3.1.3 Open Multi-Processing (OpenMP)


Open Multi-Processing (OpenMP) (BOARD, 2016) uma especicao aberta

para paralelismo de memria compartilhada. O OpenMP constitudo por um

conjunto de diretivas de compilao, chamadas rotinas de bibliotecas em tempo

de execuo e variveis de ambiente. Sua principal abordagem a execuo paralela

de loops, que utiliza diretivas de compilao, onde um pr-processador pode agendar


a execuo paralela das iteraes de um loop.

OpenMP possui quantidade exvel de paralelismo, o usurio apenas especica

uma regio paralela, indicando que todas as iteraes do lao so independentes,

ento o sistema de execuo utilizar quaisquer recursos disponveis. Devido a esta

natureza dinmica, e porque nenhuma distribuio de dados especicada, OpenMP

s pode trabalhar com threads em memria compartilhada. OpenMP portvel

entre sistemas de arquitetura de memria compartilhada.

OpenMP baseado em threads que trabalham em paralelo. Uma thread

um uxo de instrues independentes que parte de um processo. Enquanto os

processos podem pertencer a diferentes usurios ou podem ser programas diferentes

que um nico usurio est executando simultaneamente, portanto, tm o seu prprio

espao de dados, threads so parte de um processo, logo, compartilham dados entre


si (EIJKHOUT et al., 2011).
OpenMP s pode ser utilizado em problemas onde no existe dependncia de

dados, caso contrrio, as threads iro escrever no mesmo espao de memria resul-

tando em uma soluo incorreta do problema. Em casos onde ocorre a dependncia

de dados, torna-se necessrio utilizar tcnicas de colorao de grafos, como ordena-

o Red-Black, que basicamente uma forma de colorir os vrtices de um grafo de

20
tal modo que dois vrtices adjacentes possuem cores diferentes. Colorao de grafo

til para melhorar o paralelismo em tcnicas de soluo iterativa (SAAD, 2003).

Para soluo da equao da onda, foi utilizada uma discretizao explcita

no tempo, como mostrado no captulo 2. Nesse tipo de discretizao o valor do

campo de onda em tn+1 obtido em funo de valores conhecidos em tn1 e tn .


Essa discretizao garante a independncia dos dados, possibilitando o uso direto

de OpenMP e assim, dispensando a necessidade de utilizao de colorao de grafos.

3.2 Implementao paralela


As principais etapas para implementao da paralelizao do programa de si-

mulao da propagao da onda acstica esto representadas no uxograma da

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

para a paralelizao, a seo 3.2.2 apresenta a estratgia para distribuio do modelo

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

onda dentro do loop temporal e como so realizadas as comunicaes entre processos


vizinhos, na seo 3.2.5 feita a aplicao das condies de bordas e nalmente a

seo 3.2.6 apresenta a gerao e gravao do sismograma.

21
Figura 3.2: Fluxograma do programa paralelo.

No uxograma da Figura 3.2, o clculo do campo de onda aparece duplicado,

essa medida foi necessria pois so utilizados apenas dois arranjos para o campo

de presso, dessa forma necessrio intercalar entre os dois arranjos na chamada

subrotina do clculo do campo de onda. A utilizao dos dois arranjos melhor

detalhada na seo de otimizaes, seo 3.3.

3.2.1 Decomposio de domnio com MPI


Ao decompor o domnio computacional em subdomnios, pode-se dividir o tra-

balho e a memria necessria entre eles. MPI dene cada unidade de execuo como

um processo, permitindo controle do processo especco para realizar o clculo da

equao diferencial para um determinado subdomnio.

Nessa implementao, o domnio 3D para a equao da onda representado pela

malha de DF de dimenses N x, N y e Nz pode ser particionada em somente uma di-

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.

Figura 3.4: (a)Partio nas direes z e x, (b)Partio nas direes z e y,


(c)Partio nas direes x e y.

Figura 3.5: Partio do domnio nas direes x, y e z.

A forma como o domnio 3D ser particionado depender da quantidade de

processos MPI denidos na execuo do problema. O algoritmo ir tentar distribuir

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

a igualdade npx npy npz = N umP roc, conforme algoritmo de particionamento

cartesiano especicado em BALAY et al. (2016). Assim, para atender a igualdade

pode ocorrer que uma ou mais direes no sejam particionadas.

Uma vez denido o nmero de processos em cada direo, o algoritmo calcula,

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,

por exemplo, seja Nx a quantidade total de pontos da malha de DF na direo x, o

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

distribuido entre os processos na mesma direo.

Figura 3.6: Tamanho global do domnio e tamanho das parties em cada


dimenso.

Alm de conhecer os parmetros do subdomnio local, cada processo precisa ma-

pear o seu subdomnio local para o domnio global. Portanto, deve ser determinado

o ponto da malha de DF onde comea e o ponto onde termina cada subdomnio.

Estes so denominados respectivamente startx, starty , startz , endx, endy e endz


nas direes x, y e z. Essa informao facilmente obtida uma vez que j foram

denidos o nmero de parties em cada direo (npx, npy e npz ) e o tamanho de

cada partio (nxlocal , nylocal e nzlocal).


A Figura 3.7 mostra a distribuio do domnio entre 48 processos MPI para a

malha de DF de dimenso N x, N y e N z, onde npx = 4, npy = 3 e npz = 4


representam respectivamente o nmero de parties nas direes x, y , e z . Essa

topologia dos processos armazenada internamente pelo programa na forma de uma

24
matriz de dimenses (npx,npy ,npz ), sendo extremamente til para gerar e gravar o

sismograma, como ser mostrado adiante.

Figura 3.7: Topologia de distribuio dos processos MPI.

O mapeamento global do domnio permite identicar a vizinhana de cada pro-

cesso. Conhecer os vizinhos de um processo essencial para a troca de informao

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.

Essa lista representada internamente por um arranjo unidimensional de 6 posies

distribudo na seguinte ordem de posies: topo = 1, f undo = 2, esquerda = 3,


direita = 4, f rente = 5, base = 6. Assim os processos guardam na posio do

arranjo corresponde a cada vizinho o identicador do processo vizinho (procId) e,

se no possuir algum vizinho, ser guardado o valor 1.

25
Figura 3.8: Vizinhana de um processo MPI.

3.2.2 Distribuio do modelo de velocidade


Ao decompor o domnio, o modelo de velocidades distribudo entre os processos

MPI, obedecendo os parmetros da decomposio do domnio j denidos na seo

anterior. O processo mestre, processo de nmero 0 segundo a notao do MPI,

carrega para a memria o arquivo global com o modelo de velocidades e realiza

a distribuio da regio correspondente ao subdomnio atribudo a cada processo.

Enquanto o processo mestre est trabalhando na distribuio dos subdomnios,

os demais processos esto bloqueados na espera da sua regio do modelo de

velocidades. Ao receber o seu subdomnio, cada processo notica o mestre e

liberado para prosseguir com sua execuo normal. Nessa comunicao utiliza-se

as funes M P I _SEN D e M P I _RECV , que so operaes ponto--ponto

bloqueantes. Conforme visto em PJESIVACGRBOVIC et al. (2005), operaes

ponto--ponto possuem melhor desempenho que operaes coletivas. O uso de

funes bloqueantes foi necessrio porque o processo mestre precisa da conrmao

de entrega de cada mensagem enviada para que o buer de envio seja liberado para

enviar uma nova mensagem. A Figura 3.9 apresenta um modelo de velocidades

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.

3.2.3 Identicao do processo que contm a fonte


Assim como em DE MEDEIROS LARA (2012), nesse trabalho foi feita uma

modelagem de tiro comum onde a fonte ssmica inserida apenas em um ponto.

Com a decomposio de domnio, essencial identicar qual processo contm o

subdomnio onde a fonte ssmica est localizada, pois somente o processo que contm

a fonte far a insero da mesma durante a simulao da propagao da onda.

Alm disso, necessrio mapear as coordenadas da fonte no domnio global para as

coordenadas no subdomnio local, posio em que o processo fonte (psource) ir de

fato inserir os dados da fonte, conforme ilustrado na Figura 3.10.

27
Figura 3.10: Mapeamento das coordenadas globais da fonte ssmica para as
coordenadas locais. Extrado de DE MEDEIROS LARA (2012).

Neste trabalho utiliza-se a partio do domnio por clula, como mostrado na

Figura 3.1 (c). Nesse tipo de particionamento, um determinado ponto no domnio

no compartilhado entre os processos vizinhos, entretanto, a clula sim. Nesse

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

independente entre os processos sem a necessidada de trocas de dados entre eles.

3.2.4 Clculo do campo de onda


No captulo anterior foi apresentada a formulao da equao da onda com o
a a
esquema de diferenas nitas com aproximao de 8 ordem no espao e 2 ordem

no tempo. Cdigos de diferenas nitas so organizadas em torno de um stencil.


Um stencil representa todas as clulas vizinhas que so necessrias para atualizao
a
de uma nica clula (ANDREOLLI, 2016). Para um stencil de 8 ordem, so ne-

cessrios 8 pontos vizinho em cada direo para calcular o valor de um determinado

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-

renas nitas. Os pontos da malha podem ser atualizados simultaneamente usando

a equao da onda discretizada (equao 2.11) em todos os subdomnios exceto nos

pontos na fronteira da malha, que exigem informaes dos processos vizinhos. A

m de calcular o campo de onda para todos os pontos da malha do subdomnio, em

cada passo de tempo, as informaes do campo de onda dos pontos da fronteira da

malha devem ser trocadas entre os processos vizinhos.

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

informaes do campo de onda recebidas dos vizinhos e que so necessrias para o

clculo do campo de onda na fronteira. Como a malha de DF possui aproximao


a
no espao de 8 ordem, a camada extra possui tamanho de 4 pontos em todas as

fronteiras. Esse tamanho representa metade da ordem da aproximao, uma vez que

para calcular um ponto na fronteira da malha so necessrios 4 pontos anteriores ou

4 pontos posteriores, como pode ser visto no stencil da Figura 3.11. A Figura 3.12,

mostra o padro de comunicao entre os processos, onde as informaes dos pontos

da malha na regio colorida dos subdomnios so enviadas para a regio cinza dos

processos vizinhos. Em PHADKE et al. (1999) essa comunicao chamada de


comunicao de pontos fantasmas pois o buer extra (rea fantasma) no faz parte

do subdomnio local; somente um artifcio para permitir o clculo do campo de

onda no limite do subdomnio.

29
Figura 3.12: Troca de mensagens entre processos vizinhos.

A comunicao entre processadores tipicamente lenta. Uma maneira de lidar

com essa lentido na comunicao organizar o programa para que a comunica-

o acontea enquanto alguma computao esteja sendo realizada. Isto conhecido

como sobreposio de comunicao com computao (SUBOTIC et al., 2010) (HO-


EFLER e LUMSDAINE, 2008). Esta abordagem funciona bem, independentemente

da topologia da rede, uma vez que o maior benefcio da sobreposio realizar

computao independente de mensagens pendentes.

O uso de funes MPI no-bloqueantes aumenta o paralelismo de hardware su-

portando comunicao e sobreposio de computao. Sendo assim, para a troca

de mensagens entre processos vizinhos para o clculo do campo de onda, foram

utilizadas as funes MPI no-bloqueantes M P I _ISEN D e M P I _IRECV . Es-

sas funes permitem que o processamento continue imediatamente sem esperar a

conrmao do recebimento da mensagem. Dessa forma, enquanto a comunicao

est sendo realizada, cada processo executa o clculo do campo de onda com a

parte do subdomnio que no depende da mensagem pendente, ou seja, no est

na fronteira (regio branca da Figura 3.12). Em seguida, os processos utilizam a

funo M P I _W AIT ALL para vericar o recebimento da mensagem, e assim, efe-

tuar o cculo para os pontos da fronteira. A operao de clculo do campo de onda

gasta mais tempo que a comunicao entre os processos, assim foi possvel eliminar

completamente o tempo de comunicao, como ser mostrado no prximo captulo.

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,

melhor descrita na Figura 3.13.

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.

Nessa geometria, as "quinas" do modelo pertencem aos segmentos topo e base

pois esses segmentos ocupam espao contnuo de memria devido a forma como

a linguagem Fortran armazena arranjos na memria. Por estarem contnuos na

memria o topo e base so processados mais rpidos. Os segmentos direita e esquerda

so os segmentos de menor tamanho uma vez que no esto contnuos na memria

tornando o processamento mais lento.

3.2.5 Aplicao das bordas


Aps processar todo o subdomo, deve-se aplicar as condies de bordas no

modelo. Para um processo, o que caracteriza a existncia de uma borda a

ausncia de vizinho em alguma fronteira, com exceo do topo, uma vez que

simulado o contato com a superfcie livre terra-ar ou gua-ar. A vericao da

existncia de vizinho se d atravs de consulta lista de vizinhos que armazenada

por cada processo. Por exemplo, se um processo no tem o vizinho da esquerda,

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

de borda esquerda discretizada.

31
3.2.6 Gerao do sismograma
Apesar da modelagem ssmica nesse trabalho ser uma modelagem 3D, por ques-

tes de economia de memria e tempo de processamento, decidiu-se gerar sismogra-

mas 2D. Essa modelagem gera dois sismogramas, um no plano xz e outro no plano

yz . Assim, como na fonte ssmica, necessrio identicar o processo que contm

o observador com o objetivo de denir os planos em que os sismogramas sero ge-

rados. Uma vez denidos os planos xz e yz em que os sismogramas sero gerados,

utilizando a matriz de processos, j mencionada anteriormente, fcil identicar

os processos da supefcie do modelo que esto nesses planos, pois somente eles iro

gerar e gravar os sismogramas.

Cada um desses processos gera a sua parcela do sismograma, nxlocal x N total


ou nylocal x N total para os sismogramas nos planos xz e yz , respectivamente,

onde N total o nmero de passos de tempo da propagao. A gravao do

sismograma feita utilizando operaes de I/O do MPI (M P I _F ILE _OP EN ,

M P I _F ILE _SET _V IEW e M P I _F ILE _W RIT E ), possibilitando que os pro-


cessos que geraram o sismograma gravem um nico arquivo com o sismograma total,

Seismogram_X.bin e Seismogram_Y.bin, para os planos xz e yz , respectivamente.


A Figura 3.14 mostra um sismograma gerado no plano xz , com y = N y/2 a partir

de um modelo de velocidade com 3 camadas paralelas.

32
Figura 3.14: Sismograma no plano xz com y = N y/2 para o modelo de velocidades
com trs camadas paralelas.

3.2.7 Paralelizao hbrida com OpenMP/MPI


MPI e OpenMP so os dois modelos de programao primrios que tm sido

amplamente utilizados por muitos anos para computao de alto desempenho, MPI

para sistemas de memria distribuda e OpenMP para sistemas de memria com-

partilhada.

A mistura de modelos de memria compartilhada e programao de troca de

mensagem dentro de uma nica aplicao um mtodo para melhorar o desempenho

das aplicaes cientcas em clusters de sistemas de memria compartilhada ou

multi-core (CHORLEY e WALKER, 2010). Este modelo paralelo hbrido aproveita

ambos os modelos para uma mistura de plataforma de computao em memria

33
compartilhada e distribuda, alm de permitir uma abordagem relativamente simples

e fcil de paralelizao de uma aplicao (YANG e GUO, 2005).

No modelo MPI/OpenMP, as iteraes atribudas a um processo MPI so

processadas em paralelo por threads OpenMP executadas pelos cores no mesmo n


computacional. O principal uso de OpenMP a paralelizao do clculo do campo

de onda dentro de cada processo MPI, exemplicado no Algoritmo 3.1. O OpenMP

tambm foi utilizado para aumentar o desempenho do clculo das bordas.

! $OMP PARALLEL DEFAULT ( SHARED ) PRIVATE (i ,j , k )


! $OMP DO SCHEDULE ( DYNAMIC )
do k = startz , endz
do j = starty , endy
do i = startx , endx
pnext (i ,j , k ) = ...
enddo
enddo
enddo
! $OMP END DO NOWAIT
! $OMP END PARALLEL

Algoritmo 3.1: Paralelizao de loop com OpenMP.

Nesse algoritmo, os loops so organizados de forma que o sistema percorra

espao contnuo de memria devido a forma como Fortran armazena arranjos na

memria, como ser mostrado adiante.

3.3 Otimizaes
Nessa seo sero descritas algumas otimizaes implementadas no programa de

simulao da propagao da onda. Otimizaes manuais realizadas no cdigo fonte

ajudam a melhorar a performance geral do programa.

A primeira otimizao foi na criao dos buers de envio e recebimento

dos pontos das fronteiras entre processos vizinhos. As funes no bloqueantes

M P I _ISEN D e M P I _IRECV permitem que o programa continue sua execu-

o, mas essencial que os buers utilizados na comunicao no sejam alterados

at a concluso da comunicao. Para assegurar essa condio, cada processo cria

um buer de envio e um buer de recebimento para cada vizinho, por exemplo,

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

para uma nova comunicao.

A comunicao MPI no bloqueante assncrona, logo um processo de envio pode

chamar M P I _ISEN D antes do processo de recebimento chamar M P I _IRECV .


Nesse caso, a implementao MPI armazena temporariamente as informaes em

um buer interno em algum lugar na mquina de destino. No entanto, se

M P I _IRECV chamado antes que o processo de envio chame M P I _ISEN D,


ento a implementao MPI armazena os dados diretamente no buer fornecido em

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

quantidades de dados. difcil garantir que M P I _IRECV seja chamada antes

do processo de envio chamar M P I _ISEN D, assim, nessa implementao todos


os processos chamam primeiramente M P I _IRECV e em seguida M P I _ISEN D .

A obteno desse desempenho extra ir depender da velocidade que cada processo

realiza o processamento de seu subdomnio.

Na equao 2.11, equao discretizada da onda acstica, nota-se que o termo


 2
V t
Ci,j,k = i,j,k
h
constante ao longo dos passos de tempo, isso permitiu direta-

mente pr-computar essa constante na inicializao dos parmetros do programa.


 
Vi,j,k t
A mesma otimizao foi feita com o termo das equaes 2.25, 2.26, 2.27,
h
2.28, 2.29, equaes das bordas. O termo das equaes de bordas armazenado

reutilizando o arranjo de velocidades, isso evita uso desnecessrio de memria para

alocao de mais um arranjo.

A equao discretizada da onda, equao 2.11, indica que so necessrios trs

arranjos para armazenar o campo de presso nos tempo n 1, n, n + 1. Na verdade,

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

representam um grande volume de dados.

35
Figura 3.15: Arranjos de campo de presso no tempos t 1, t, t + 1. Extrado de
ANDREOLLI (2016).

Uma simplicao signicativa foi a gerao do sismograma somente em 2D,

uma vez que o sismograma 3D demanda grande espao de memria e tempo de

processamento. O sismograma 2D por sua vez, mais econmico e fornece uma

visualizao simplicada da subsuperfcie.

Fortran diferente de linguagens como C na maneira que ele armazena arran-

jos na memria. Apesar dos elementos de arranjos serem referenciados em linha

e coluna, Fortran armazena um arranjo de qualquer dimenso como arranjo unidi-

mensional por coluna. Por exemplo, seja um arranjo bidimensional com 3 linhas e

5 colunas, representado gracamente pela seguinte matriz:

(1, 1) (1, 2) (1, 3) (1, 4)


(2, 1) (2, 2) (2, 3) (2, 4)
(3, 1) (3, 2) (3, 3) (3, 4)

Fortran ir armazenar esse arranjo na memria na seguinte sequncia:

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)

Portanto, a forma mais eciente de percorrer arranjos em Fortran por coluna.

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

obter. Todos os loops do programa que percorrem arranjos so organizados de forma


que o sistema percorra espao contnuo de memria.

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

contnuo de memria. Dessa forma, as "quinas" do modelo somente so processadas

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

os segmentos direita e esquerda possuem o menor.

Inicialmente, considera-se que o campo de onda zero no tempo t = 0 para

todos os pontos da malha, portanto para clculo do campo de onda no tempo inicial

no h necessidade de troca de informao entre processos vizinhos. Esse clculo

realizado fora do loop temporal e, somente dentro do loop temporal realizada a

troca de informao dos pontos da fronteira dos subdomnios. Sendo assim, o loop
temporal possui (N total1) iteraes. Essa medida evita comunicao desnecessria

entre vizinhos, j que a comunicao entre processos lenta.

37
Captulo 4
Anlise de Desempenho

O objetivo principal da computao paralela obter desempenho maior do que

possvel com a computao sequencial. Para isso, melhorias de desempenho da

aplicao paralela so uma parte integrante do processo de desenvolvimento. Essas

melhorias requerem o conhecimento da arquitetura de mquina, da estratgia de

paralelizao do programa e do mapeamento do cdigo da aplicao e do modelo de

programao para a arquitetura da mquina.

Melhorias para otimizao da aplicao so resultado da anlise de desempenho

do programa, que tem como base a instrumentao do cdigo fonte. Instrumentao

um processo que insere sondas de medio no cdigo da aplicao. A execuo de

aplicaes instrumentadas registram mtricas de hardware e software para anlise

oine. Os dados gravados podem incluir pers, rastreio de eventos, valores de

contadores de hardware e tempos decorridos. A anlise dos dados de desempenho

capturados tenta identicar possveis pontos de otimizaes.

Uma instrumentao de desempenho detalhada pode incluir uso de um perlador

para estimar os tempos de execuo dos procedimentos, registro de instruo de

contadores de hardware para identicar operaes e custos de acesso a memria.

A seo 4.1 apresenta os perladores utilizados nesse trabalho, a seo 4.2 mostra

os resultados da perlagem do cdigo da aplicao e as melhorias de desempenho

implementadas em consequncia da anlise desses resultados, por ltimo a seo

4.3 exibe avaliaes de desempenho do cdigo otimizado.

4.1 Ferramentas de perlagem


4.1.1 OpenMP Tools (OMPT)
OpenMP Tools (OMPT) (EICHENBERGER et al., 2014) uma API (Applica-
tion Programming Interface) portvel contendo ferramentas de anlise de desempe-

38
nho. Ela fornece acesso a informaes relacionadas com o OpenMP em tempo de

execuo do programa. OMPT uma proposta de extenso para a especicao

OpenMP. Ela dene uma interface padronizada para obter informaes a partir do

sistema de execuo do OpenMP. A API do OMPT fornece informaes de estado

sobre o tempo de execuo do OpenMP para serem consultadas por uma ferramenta

de anlise.

OMPT permite que ferramentas de desempenho baseadas em eventos registrem

retornos de chamada de funo (callbacks) para os eventos de interesse. Para a

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

construes de sincronizao. Os retornos de chamada de eventos so classicados

como obrigatrios e opcionais. Eventos obrigatrios tm de ser implementados por

todas as implementaes OpenMP padro. O conjunto de eventos obrigatrios

pequeno, mas suciente para anlise de desempenho bsico de programas OpenMP.

Por exemplo, eventos obrigatrios incluem o incio e o m de threads, tarefas

e regies paralelas. Uma implementao OpenMP pode suportar um conjunto

arbitrrio de eventos opcionais, mas ferramentas de anlise no podem contar

com a disponibilidade de qualquer evento opcional. Nesse trabalho foi utilizada a

implementao OMPT da Intel, Intel OpenMP Runtime.

4.1.2 Performance Application Programming Interface


(PAPI)
Performance Application Programming Interface (PAPI) (MUCCI, 2016) fornece

uma interface consistente e metodologia para acessar os contadores de desempenho

de hardware disponveis na maioria dos microprocessadores modernos. Estes conta-

dores existem como um pequeno conjunto de registros que contam eventos, que so

ocorrncias de sinais especcos relacionados com a funo do processador. Esses

eventos permitem coletar mtricas de desempenho do hardware como, por exemplo,

a contagem de instrues, ciclos de clock e erros de cache. O acompanhamento

destes eventos facilita a correlao entre a estrutura do cdigo fonte e a ecincia do

mapeamento desse cdigo para a arquitetura subjacente. Esta correlao tem uma

variedade de usos na anlise de desempenho, incluindo ajuste manual, otimizao do

compilador, depurao, monitoramento e modelagem de desempenho. Alm disso,

esta informao pode ser til no desenvolvimento de novas tecnologias de compi-

39
lao, bem como na orientao do desenvolvimento de arquiteturas no sentido de

aliviar os gargalos que ocorrem comumente em computao de alto desempenho.

A biblioteca PAPI possui uma srie de eventos predenidos. Este conjunto

uma coleo de eventos tipicamente encontrados em muitas CPUs que oferecem

contadores de desempenho. Um nome de evento predenido pelo PAPI mapeado

sobre um ou mais eventos nativos contabilizveis em cada plataforma de hardware.

Em qualquer plataforma, o evento predenido pode estar diretamente disponvel

como um nico contador, pode ser derivado utilizando uma combinao de conta-

dores ou estar indisponvel.

4.1.3 Tuning and Analysis Utilities (TAU)


Tuning and Analysis Utilities (TAU) (SHENDE e MALONY, 2006) um con-

junto portvel de ferramentas de perlagem e rastreio para anlise de desempenho

de programas paralelos. TAU capaz de reunir informaes de desempenho atravs

da instrumentao de funes, mtodos, blocos bsicos e declaraes, bem como

amostragem baseada em eventos. A instrumentao do TAU est disponvel atravs

de uma API no nvel de biblioteca ou de aplicao. A API tambm fornece seleo

de grupos de perlagens para organizar e controlar a instrumentao. A instrumen-

tao pode ser inserida no cdigo fonte usando uma ferramenta de instrumentao

automtica baseado em Program Database Toolkit (PDT) ou manualmente usando

a API de instrumentao.

A partir dos dados de perlagem coletados, procedimentos de anlise de perla-

gem do TAU podem gerar inmeras informaes de desempenho. TAU pode mostrar

o tempo exclusivo e inclusivo gasto em cada funo com resoluo de nanossegun-

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.

Informaes de tempo tambm podem ser exibidas em relao a ns, contextos e

threads. Em vez de tempo, tambm podem ser mostrados dados de desempenho de

hardware.

A ferramenta de visualizao de perlagem do TAU, Paraprof, fornece exibies

grcas de todos os resultados de anlise de desempenho, de forma agregada e

individual por ns, contexto e threads. possvel identicar rapidamente fontes

de gargalos de desempenho na aplicaco usando a interface grca. Alm disso,

TAU pode gerar rastreio de eventos que podem ser exibidos com as ferramentas

de visualizao de rastreio Vampir, Paraver ou Jumpshot (SHENDE e MALONY,

2006).

40
TAU no se limita a perlagem de cdigo MPI, foi projetado para perlagem de

programao paralela em geral, incluindo CUDA, OpenMP e pthreads regulares.

Na congurao da instalao do TAU, deve-se informar quais bibliotecas de

instrumentao sero utilizadas. Nesse trabalho foram utilizadas as bibliotecas

do OMPT e PAPI na congurao do TAU, dessa forma, a execuo do cdigo

instrumentado com TAU fornece tambm as informaes de desempenho de

OpenMP e contadores de hardware.

4.2 Anlise de perlagem


Esta seo descreve detalhes da anlise da modelagem ssmica usando TAU e

como os resultados obtidos com o TAU ajudaram a melhorar o desempenho da

modelagem. Ser apresentada a melhora de desempenho associada a cada otimizao

que foi realizada.

Primeiramente, necessrio denir algumas mtricas de desempenho utilizadas

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

tempo de execuo em um nico processador e o tempo de execuo na congurao

em paralelo, isto ,

T1
Sp =
Tp

onde, T1 o tempo de execuo em um nico processador e Tp o tempo para p


processadores. No caso ideal Tp = T1 /p, mas na prtica isso difcil de atingir,

ento Sp p . Para medir o quo longe se est do speedup ideal, utilizado o

conceito de ecincia Ep = Sp /p. Nota-se que 0 < Ep 1.


Para realizar a avaliao de desempenho do programa de modelagem, o cdigo

fonte foi compilado juntamente com o TAU utizando o compilador da Intel (ifort)

com otimizao, opo -O3 de compilao. Foi utilizado tambm MVAPICH2 como

implementao do padro MPI. Na medio do tempo durante essa fase considerou-

se uma nica execuo instrumentada do programa, tendo sido contabilizado o

tempo total de execuo da aplicao de modelagem.

As avaliaes foram realizadas na mquina Stampede que pertence ao Texas

Advanced Computing Center (TACC), da Universidade do Texas em Austin (TACC,

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

(2GB/core). A interconexo uma rede Inniband FDR de switches Mellanox,

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 de anidade chamado tacc_anity para forar alocao de memria local

e xar o processo ao socket. O uso de tacc_anity assegura a no migrao das

threads e acessos memria local. Todas as execues do programa utilizaram o

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-

ses 512 512 512, N x, N y e N z, respectivamente. Foram efetuados somente

500 passos de tempo. A Figura 4.1, gerada pelo Paraprof a partir de informaes

da instrumentao do cdigo com o TAU, mostra a sntese da execuo do pro-

grama atravs dos ns e threads. Analisando a gura, nota-se alguns gargalos e

possveis pontos de melhorias. Observando a barra roxa, possvel perceber uma

m distribuio do clculo do stencil entre a threads OpenMP (OpenM P _LOOP )


causada por longos perodos de ociosidade das threads, demonstrado na barra la-

ranja (OpenM P _W ait_Barrier ). Essa ociosidade toma 17,50% do tempo total de

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

das threads tem que ser minimizada.

Figura 4.1: Perlagem inicial da modelagem executada com 8 processos MPI e 16


threads OpenMP por processo.

42
threads OpenMP, foi avaliado o desem-
Para diminuir o tempo de ociosidade das

penho da clusula SCHEDU LE , que dene como as iteraes do loop so divididas

entre as threads OpenMP. Os tipos de SCHEDU LE avaliados foram:

ST AT IC , o OpenMP estaticamente atribui as iteraes do loop s threads,


dividindo o loop em blocos de tamanhos iguais. Essa estratgia tem o menor

overhead, mas mais susceptvel a desequilbrios de carga.

DY N AM IC , o OpenMP atribui uma iterao ou um bloco de iteraes para


cada thread. Quando a thread termina, ser atribuda a prxima iterao ou

o bloco de iteraes que no foram executadas ainda. Essa estratgia permite

melhor equilbrio de carga entre as threads, mas normalmente tem maiores

custos de overhead (custos de sincronizao por bloco).

GU IDED semelhante a DY N AM IC , exceto que o tamanho do bloco muda


enquanto o programa executado. Comea com blocos grandes, mas em se-

guida, ajusta para tamanhos de blocos menores, se a carga de trabalho estiver

desequilibrada. Essa estratgia tem a vantagem de normalmente exigir poucos

blocos, que se traduz em pouca sincronizao.

A avaliao foi realizada executando a modelagem com apenas 1 processo MPI.

O resultado apresentado na Tabela 4.1 e a Figura 4.2 mostra o grco de speedup


observado. O cdigo inicial utiliza a estratgia ST AT IC .

STATIC DYNAMIC GUIDED


Threads Tempo Speedup Tempo Speedup Tempo Speedup
1 587,90 1,00 587,90 1,00 587,90 1,00

2 312,07 1,88 313,50 1,88 307,57 1,91

4 216,88 2,71 177,30 3,32 199,69 2,94

8 246,28 2,39 116,55 5,04 173,23 3,39

12 238,13 2,47 103,60 5,67 164,82 3,57

16 252,23 2,33 94,59 6,22 159,52 3,69

20 207,53 2,83 100,91 5,83 156,72 3,75

Tabela 4.1: Desempenho de diferentes tipos de schedule do OpenMP. Tempo


medido em segundos.

43
Figura 4.2: Speedup para diferentes tipos de schedule do OpenMP.

Nota-se que o tipo DY N AM IC obteve o melhor desempenho dentre os trs

tipos. Utilizando o TAU para investigar o comportamento da aplicao para cada

tipo de schedule, na Figura 4.3 pode-se peceber que houve balanceamento do

trabalho entre as threads utilizando o tipo DY N AM IC . A Figura 4.4 mostra a


distribuio das threads para o tipo GU IDED , que apresenta uma distribuio

semelhante ao tipo DY N AM IC mas devido ao overhead para dimensionar o

tamanho do bloco para equilibrar a carga de trabalho a estratgia no conseguiu

superar o desempenho do tipo DY N AM IC . J o tipo ST AT IC , mostrado na

Figuras 4.5, no conseguiu fazer uma distribuio muito boa do trabalho entre as

threads acarretando perda de desempenho.

44
Figura 4.3: Distribuio das threads pelo tipo DY N AM IC .

Figura 4.4: Distribuio das threads pelo tipo GU IDED.

Figura 4.5: Distribuio das threads pelo tipo ST AT IC .

45
Na tentativa de melhorar ainda mais a ecincia do OpenMP, foi adicionado a

clusula COLLAP SE , que especica quantos loops em um loop aninhado devem

ser unidos em um grande espao de iterao e dividido de acordo com a clusula

schedule. Foi avaliado a unio dos loops para Y Z , COLLAP SE(2). A Tabela 4.2
e

e o grco da Figura 4.6 comparam os resultados para a clusula DY N AM IC e

DY N AM IC com COLLAP SE(2) mostrando que a insero dessa clusula piorou

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

2 313,50 1,88 403,03 1,46

4 177,30 3,32 213,57 2,75

8 116,55 5,04 139,45 4,22

12 103,60 5,67 119,46 4,92

16 94,59 6,22 108,98 5,39

20 100,91 5,83 105,49 5,57

Tabela 4.2: Desempenho da diretiva COLLAP SE .

46
Figura 4.6: Speedup para diretiva COLLAP SE .

Esse decaimento no desempenho acontece devido a forma como a estratgia

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.

Quando utiliza-se COLLAP SE(2) o nmero de iteraes aumenta para N z N y e

cada thread deve fazer uma nova solicitao aps realizar somente N x iteraes do

loop interno. Dessa forma aumenta o nmero de chamadas OpenMP runtime, o


que provoca o desempenho ruim.

Mudando-se a estratgia de schedule do loop de clculo do stencil para

DY N AM IC reduziu-se o tempo de ociosidade das threads OpenMP proporci-

onando melhor balanceamento do trabalho. A Figura 4.7 mostra a distribuio

das threads aps a troca do schedule DY N AM IC e a Figura 4.8 mostra


para

a mesma distribuio para a estratgia ST AT IC inicial. Comparando-se as duas

guras visvel a melhor distribuio das threads pela estratgia DY N AM IC .

A Figura 4.9 mostra a diferena do tempo de espera das threads OpenMP entre

as duas implementaes. Nota-se que o tempo de ociosidade das threads na

implementao inicial bem maior que a implementao otimizada. A ociosidade

das threads no clculo do stencil reduziu-se de 17,50% para 7,31%, alavancando a

melhora no desempenho da modelagem em aproximadamente 21,76%. Lembrando

47
que o OpenMP tambm utilizado na aplicao das bordas, logo a estratgia de

schedule foi alterada para DY N AM IC tambm no clculo das bordas, o que

contribui para o ganho de desempenho no tempo total.

Figura 4.7: Resultado da perlagem do cdigo alterado para a estratgia


DY N AM IC executado com 8 processos MPI e 16 threads OpenMP por processo.

Figura 4.8: Resultado da perlagem do cdigo inicial com a estratgia ST AT IC


executado com 8 processos MPI e 16 threads OpenMP por processo.

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.

Figura 4.9: Tempo total de espera de cada thread em


OpenMP_WAIT_BARRIER.

Aps melhorar o balanceamento de carga das threads, foi feita uma avaliao

de desempenho do cdigo otimizado. A Figura 4.10 mostra a linha de tempo

de execuo da modelagem para 20 passos de tempo visualizada pela ferramenta

Jumpshot, que faz parte do pacote de ferramentas do TAU. Na gura, a cor

vermelha representa o clculo do stencil e a cor verde representa a ociosidade

dos processos MPI esperando a mensagem dos vizinhos (M P I _W aitall ). Essa

ociosidade corresponde cerca de 9,65% do tempo total e acontece mesmo utilizando

as funes MPI no bloqueantes, pois aps computar o stencil os processos cam

presos esperando mensagens dos vizinhos. A Figura 4.10 conrma que a comunica-

o acontece durante a chamada de M P I _W aitall. Segundo BUETTNER et al.


(2013), a maioria das implementaes MPI atuais processam mensagens pendentes

durante chamadas biblioteca MPI. Mas, sem a necessidade de chamar qualquer

funo relacionada com MPI durante o clculo independente de comunicao, no

h progresso da mensagem e a comunicao real movida para a chamada a

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).

O Algoritmo 4.1 mostra o cdigo original. Para permitir real sobreposio de

comunicao com computao, foi reservada uma thread OpenMP para realizar a

comunicao, semelhante a PAUL et al. (2015). Nessa implementao, mostrada

no Algoritmo 4.2, a thread 0 dedicada a comunicao enquanto a segunda


thread realiza o clculo do stencil, onde ela dividida em vrias threads usando
paralelismo aninhado. Uma vez que uma thread alocada para a comunicao, a

computao do stencil realizada com menos uma thread, de modo que a thread

de comunicao recebe um core.

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

de fazer a computao dos pontos dependentes da comunicao. Teoricamente, isso

perfeito para esconder toda a comunicao por trs da computao, assumindo

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

de cada processo e diminuir o nmero de comunicaes, garantindo que o tempo

de computao dos stencils seja grande o suciente para sobrepor o tempo de

comunicao. A Figura 4.11 mostra a visualizao da execuo do programa pelo

Jumpshot aps a introduo da thread de comunicao. possvel perceber que

o tempo de comunicao (cor verde) simultneo ao tempo de processamento do

stencil (cor vermelha). Nota-se que o tempo total de comunicao (M P I _W aitall )

aumentou mas esse tempo no representa acrscimo ao tempo total de execuo da

modelagem uma vez que a comunicao acontece ao mesmo tempo que o clculo do

stencil. Permitindo-se a sobreposio da comunicao com computao utilizando


thread dedicada para comunicao, reduziu-se, neste teste, o tempo de execuo
em cerca de 9,70%.

Figura 4.11: Visualizao da linha de tempo de execuo para 20 passos de tempo


com 4 processos e 16 threads por processo aps deixar uma thread dedicada para
comunicao onde pode ser vista a sobreposio da comunicao (verde) com o
clculo do stencil (vermelho).

51
A ltima avaliao foi feita utilizando PAPI para medir vrias caractersticas do

programa de modelagem usando contadores de desempenho de hardware. A tabela

4.3 mostra os valores medidos para os contadores utilizados. Nessas medies

descobriu-se que um nmero signicativo de erros de acesso a cache esto ocorrendo.


A taxa de erro de acesso a dados de cache L2 cerca de 30,76%.

Contador Valor
Operaes de ponto utuante 6.832E+05

Carregamento de instrues 5.657E+11

Erro de acesso a cache L1 7.447E+10

Erro de acesso a cache L2 2.291E+10

Tabela 4.3: Valores de contadores de desempenho de hardware para clculo do


stencil.

Para aumentar o reuso de cache, o loop de clculo do campo de onda foi


alterado de forma que os pontos do stencil sejam acessados caminhando somente

na direo x, nica direo em que os elementos esto contnuos na memria. Nessa


nova implementao, os valores nas direes y e z so dados por [x + k N x] e

[x + k N x N y ], onde k = 1, ..., 4, respectivamente. Isso signica que cada um

desses valores pertencem a linhas de cache diferentes. O programa de modelagem

compilado com o compilador Intel utilizando a opo -O3, isso faz com que o

loop de clculo do stencil seja vetorizado (conrmado via relatrio de vetorizao,

opo -vec-report3). Com a vetorizao essa mudana na forma de percorrer os

stencils permite que a computao do stencil possa acessar mais de um valor

para cada linha de cache. A alterao na forma de caminhar no stencil reduziu

os erros de acesso as caches L1 e L2, aumentando o reuso de dados e instrues,

permitindo uma melhora no desempenho do programa de aproximadamente

7,30%. A Tabela 4.4 compara os valores dos contadores de desempenho de hard-

ware para as duas implementaes, apresentando o percentual de ganho para cada

um deles. Porm ainda se observa um volume signicativo de erros de acesso a cache.

52
Contador Antigo Novo Ganho
Operaes de ponto utuante 6.832E+05 7.302E+05 6,88%

Carregamento de instrues 5.657E+11 5.500E+11 2,78%

Erro de acesso a cache L1 7.447E+10 7.415E+10 0,43%

Erro de acesso a cache L2 2.291E+10 2.277E+10 0,61%

Tabela 4.4: Comparao dos valores de contadores de desempenho de hardware


para clculo do stencil nas duas implementaes.

O Algoritmo 4.3 mostra o cdigo com a implementao antiga, onde o stencil


percorrido acessando um arranjo de trs dimenses. O Algoritmo 4.4 mostra o

cdigo com a nova implementao que acessa o stencil percorrendo um arranjo

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

Algoritmo 4.3: Cdigo inicial acessando os pontos do stencil percorrendo um

arranjo de trs dimenses.

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

Algoritmo 4.4: Cdigo alterado para acessar os pontos do stencil percorrendo um

arranjo unidimensional.

4.3 Avaliao de escalabilidade


Aps detectar os problemas de desempenho do cdigo e aplicar as devidas oti-

mizaes para tentar corrig-los, essa seo ir avaliar a escalabilidade do cdigo

otimizado.

Existem dois tipos de escalabilidade: forte e fraca. A escalabilidade forte guarda

semelhana com o conceito de speedup. Diz-se que um programa mostra escalabili-

dade forte quando o tempo de execuo reduzido por um fator que inversamente

proporcional ao nmero de processadores utilizados, isto , se dois processadores

so usados, o tempo de execuo deveria ser a metade do tempo necessrio para um

processador, se forem utilizados quatro processadores, o tempo de execuo deveria

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

processadores crescem de tal maneira que a quantidade de trabalho por processador

54
permanece constante, a velocidade de operaes por segundo de cada processador

tambm permanece constante. Esta medida um pouco difcil de mostrar, uma

vez que a relao entre o nmero de operaes e a quantidade de trabalho pode ser

complicada. Se esta relao linear, pode-se armar que a quantidade de trabalho

por processador mantida constante, e mostra-se que o tempo de execuo paralela

constante medida que o nmero de processadores cresce (EIJKHOUT et al.,


2011).

A escalabilidade fraca no representativa para o problema de modelagem ss-

mica devido ao critrio de estabilidade da malha imposto pela discretizao explcita.

Para aumentar o nmero de pontos, tem-se que diminuir o espaamento da malha,

que implicaria em diminuir o intervalo de tempo para manter a estabilidade num-

rica do problema. Isso congura uma nova modelagem, diferente da inicial, logo no

seria o mesmo problema.

Para as avaliaes desta seo, apenas o loop temporal do clculo da propagao


da onda foi considerado na medio do tempo de processamento. Foram realizadas

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.

Nas avaliaes de desempenho da seo anterior, assumiu-se que a melhor con-

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

avaliaes de escalabilidade dessa seo. A avaliao foi realizada com um nmero

xo de 64 processos MPI, onde foi-se variando a quantidade de ns utilizados, con-

sequentemente variando a quantidade de processos por ns e threads por processos,


partindo de um nmero mximo de processos por n, e reduzindo-se at ter-se 1

processo em cada n. Inicialmente foram utilizados 8 processos por n, que o

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

sua execuo, onde 1 thread dedicada a comunicao e a outra encarregada do

clculo do stencil. Nessa primeira congurao, os 64 processos so distribudos em

8 ns sendo 8 processos por n, como cada n possui 16 cores, idealmente tem-se 16


threads que so distribudas entre os 8 processos do n, cando cada processo com

2 threads.

Foram utilizados 2048 pontos em cada direo, ou seja N x = N y = N z = 2048


e executados 1000 passos de tempo. A Tabela 4.5 mostra o resultado da avaliao,

conrmando que a melhor congurao 1 processo por n pois assim, todos os

cores do n podem ser utilizados para rodar threads OpenMP.

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

o programa executado. Nessa avaliao a carga de trabalho, isto , o clculo

do stencil, constante pois no alterada a quantidade de processos, mas sim

a quantidade de trabalhadores, ou seja o nmero total de threads, quanto mais

trabalhadores executando a mesma quantidade de trabalho mais rpido o trabalho

realizado.

Aproveitando-se dos valores da Tabela 4.5, faz-se uma rpida comparao do

desempenho da aplicao hbrida com uma verso da aplicao utilizando somente

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

demorou 232.83 segundos, quase o dobro do tempo do hbrido!

As prximas avaliaes sero realizada com um modelo de 1024 pontos em cada

direo (N x = N y = N z = 1024), pois com 2048 pontos no foi possvel alocar

os arranjos necessrios para a execuo do programa para 1, 2 e 4 processos MPI

devido a memria insuciente. Todas as execues so hbridas com 1 processo MPI

por n e 16 threads por processo e executam 1000 passos de tempo.

A prxima avaliao tem o objetivo de comparar a escalabilidade da aplicao

com rotinas MPI bloqueantes e no bloqueantes. Para a execuo com rotinas

bloqueantes, uma nova verso do cdigo otimizado foi gerada substituindo as

rotinas no bloqueantes pelas bloqueantes. A Tabela 4.6 exibe o resultado das

execues e a Figura 4.12 mostra o grco de speedup para os dois programas.

56
Distribuio No bloqueante Bloqueante
Processos npxnpynpz Tempo Speedup Tempo Speedup
1 111 516,66 1,00 483,09 1,00

8 222 105,73 4,89 99,67 4,85

27 333 46,62 11,08 40,36 11,97

64 444 24,97 20,69 26,69 18,10

125 555 18,29 28,25 21,42 22,55

216 666 13,60 37,99 13,23 36,51

Tabela 4.6: Valores de speedup para rotinas MPI bloqueantes e no bloqueantes.


Tempo medido em segundos.

Figura 4.12: Grco de speedup para rotinas MPI bloqueantes e no bloqueantes.

Observando a tabela e o grco de speedup percebe-se que para um nmero

pequeno de processos onde, consequentemente, pouca comunicao realizada, a

implementao com as rotinas bloqueantes tem um desempenho ligeiramente me-

lhor que implementao no bloqueante. Mas medida que o nmero de processos

aumenta, o nmero de comunicaes aumenta e as rotinas bloqueantes perdem de-

sempenho, enquanto que as rotinas no bloqueantes aumentam o desempenho. Esse

comportamento vlido pelo menos at 216 processos, conforme mostrado no grco

de speedup. Esse aumento de desempenho demonstrado nas rotinas no bloqueantes

acontece devido ao fato do custo de comunicao ter pouca ou nenhuma inuncia

57
no tempo total. Enquanto que para as rotinas bloqueantes, o custo de comunicao

afeta completamente o tempo total de execuo da aplicao.

O objetivo da prxima avaliao medir a escalabilidade forte do pro-

grama de modelagem, utilizando valores de speedup que fornecem ecincia

acima de 50%. A primeira avaliao foi realizada com uma malha de tamanho

N x = N y = N z = 1024, novamente foram executados 1000 passos de tempo. A

Tabela 4.7 apresenta os valores de speedup e ecincia, a Figura 4.13 mostra o

grco de speedup e Figura 4.14 exibe o grco de ecincia.

Processos npxnpynpz Cores Tempo (seg) Speedup Ecincia


1 111 16 515,90 1,00 100%

2 112 32 395,11 1,31 65%

4 122 64 183,96 2,80 70%

8 222 128 105,16 4,91 61%

16 224 256 58,52 8,82 55%

Tabela 4.7: Valores de speedup e ecincia para malha de tamanho


N x = N y = N z = 1024.

Figura 4.13: Grco de speedup para malha de tamanho N x = N y = N z = 1024.

58
Figura 4.14: Grco de ecincia para malha de tamanho N x = N y = N z = 1024.

Os resultados indicam que a partir de 4 processos, que no processamento

hbrido equivalem a utilizaco de 64 cores, no vale mais a pena aumentar o

poder de processamento, porque ocorre um decaimento signicativo da ecincia

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

comunicaco/computao de forma apropriada. Para provar esse comportamento,

ser realizada nova avaliao dobrando o tamanho da malha em cada direo, ou

seja N x = N y = N z = 2048. Para essa malha no foi possvel executar o programa

para 1, 2 e 4 processos MPI devido a insucincia de memria. A Tabela 4.8

apresenta os valores de speedup e ecincia, a Figura 4.15 mostra o grco de

speedup e Figura 4.16 exibe o grco de ecincia.

Processos npxnpynpz Cores Tempo (seg) Speedup Ecincia


8 222 128 663,26 1,00 100%

16 224 256 452,18 1,47 73%

32 244 512 220,95 3,00 75%

64 444 1024 128,52 5,16 65%

128 448 2048 65,57 10,12 63%

256 488 4096 35,77 18,54 58%

Tabela 4.8: Valores de speedup e ecincia para malha de tamanho


N x = N y = N z = 2048.

59
Figura 4.15: Grco de speedup para malha de tamanho N x = N y = N z = 2048.

Figura 4.16: Grco de ecincia para malha de tamanho N x = N y = N z = 2048.

60
Aumentando o tamanho da malha, consequentemente, aumentando a carga de

trabalho das threads, a ecincia ca em torno de 70% at 32 processos, equiva-


lentes a 512 cores. Novamente dobra-se o tamanho da malha para realizar nova
avaliao. A Tabela 4.9 apresenta os valores de speedup e ecincia considerando o

particionamento com 64, 128 e 256 processos MPI. Assim como no teste anterior,

particionamentos com nmero de processos inferiores no foram possveis, devido a

problemas de alocaco de memria. A Figura 4.17 mostra o grco de speedup e


Figura 4.18 exibe o grco de ecincia para a malha de N x = N y = N z = 4096.

Processos npxnpynpz Cores Tempo (seg) Speedup Ecincia


64 444 1024 773,88 1,00 100%

128 448 2048 494,83 1,56 78%

256 488 4096 234,77 3,30 82%

Tabela 4.9: Valores de speedup e ecincia para malha de tamanho


N x = N y = N z = 4096.

Figura 4.17: Grco de speedup para malha de tamanho N x = N y = N z = 4096.

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

e ecincia de at 82% na utilizao de 4096 cores, quanto maior o tamanho do

modelo, melhor a ecincia. Isso acontece porque a medida que divide-se mais e

mais o domnio, o processamento do stencil muito mais rpido do que o tempo

de comunicao, que acaba penalizando o tempo total de execuo. Para modelos

maiores, pode-se ter mais divises do domnio e ainda assim a carga de trabalho

das threads ser grande o suciente para cobrir o tempo de comunicao. As

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

comunicao sobre os diferentes tamanhos de malha.Uma vez que a comunicao e


3
o clculo do stencil acontecem simultaneamente, para a malha de 1024 , o tempo

de comunicao possui bastante inuncia sobre o tempo total de execuo, a

computao representa cerca de 55% do custo de comunicao, o que implica em um

overhead de 45% de comunicao. Esse overhead diminui medida que o tamanho


3
da malha aumenta, para a malha 2048 o overhead de comunicao est em torno
3
de 17,50% enquanto que para a malha 4096 esse overhead de aproximadamente

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.

Figura 4.20: 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 = 2048.

Figura 4.21: 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 = 4096.

63
Captulo 5
Concluso e Trabalhos Futuros

Neste trabalho foi descrita a implementao paralela de um algoritmo de diferen-

as nitas baseado em propagao de onda acstica 3D. A modelagem da propagao

de onda acstica usado como ferramenta de modelagem em processamento de da-

dos ssmicos para explorao de petrleo. A implementao paralela utiliza modelo

hbrido de programao MPI/OpenMP.

Tambm descrito o processo de melhoria no desempenho do algoritmo paralelo

mapeado para clusters modernos multi-cores, com a ajuda de ferramentas de anlise

de desempenho. As ferramentas do pacote do TAU ajudaram a visualizar e analisar

dados de desempenho de diferentes nveis, tais como comunicao entre processos,

threads dentro de um processo e utilizao de unidade funcional dentro de um core.


A perlagem com as ferramentas disponveis no pacote do TAU permitiu iden-

ticar problemas de ociosidade das threads OpenMP, a visualizao da perlagem

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.

Utilizando visualizao de rastreamento gerado pelo TAU conrmou-se que as roti-

nas no bloqueantes do MPI no fornecem real sobreposio de comunicao com

computao. A soluo foi usar uma thread OpenMP dedicada a comunicao

enquanto as demais threads realizam o clculo do stencil, garantindo, assim, a so-

breposio. Para vericar os contadores de desempenho de hardware, o PAPI foi

essencial, permitindo identicar problemas de erro de acesso as cache L1 e L2, que

foram diminudos com a otimizao do stencil.


Cada otimizao realizada contribuiu para melhorar o desempenho da aplica-
3
o. Para a malha com 512 pontos e computando-se somente 500 passos de

tempo, a troca do tipo de SCHEDU LE teve bastante impacto sobre o tempo

total, reduzindo-o em cerca de 21% e o uso de thread dedicada para comunicao

juntamente com a otimizao do stencil forneceram 16,29% de melhoria. Essas

otimizaes melhoraram em aproximadamente 50% o desempenho do cdigo da

modelagem ssmica. As otimizaes no alteram o resultado do programa, todas as

64
execues, independente da quantidade de processos e threads utilizados, produzem
o mesmo resultado.

Os problemas de desempenho listados neste trabalho, tais como desequilbrio

de carga das threads, insuciente sobreposio de comunicao com computao, o

pouco reuso de cache e suas solues so aplicveis a uma variedade de algoritmos

cientcos que executam em clusters modernos.

As anlises de escalabilidade mostraram que o algoritmo paralelo possui escalabi-

lidade forte com melhor ecincia para malhas sucientemente grandes, pois assim o

tempo gasto no clculo do campo de onda consegue cobrir o tempo de comunicao.

Para essas mesmas condies, tambm foi mostrado que a implementao com ro-

tinas MPI no bloqueantes com real sobreposio de comunicao com computao

possui melhor desempenho que a implementao com rotinas bloqueantes.

Desenvolvimentos futuros para esse trabalho incluem:

Utilizar o modelo hbrido e as solues desse trabalho de melhoria de desempe-

nho para a modelagem da onda elstica 3D e Reverse Time Migration (RTM);

Implementar um modelo hbrido com MPI/OpenACC, aproveitando o po-

der computacional das GPUs. Comparar o desempenho da implementao

MPI/OpenACC com o desempenho de MPI/OpenMP.

Estender a implementao desse trabalho para realizar o paralelismo de ti-

ros, uma vez que na aquisio real so realizadas mltiplas emisses do pulso

ssmico (tiros);

Utilizar tcnicas mais robustas de otimizao de stencil, como a proposta de

semi-stencil de DE LA CRUZ MARTNEZ (2015), para aumentar o reuso de

cache;

Explorar tcnicas de loop tiling para otimizao de stencil, como em ZHOU

(2013) que estuda tcnicas de tiling diferentes das tradicionais. As tcnicas

estudadas tem objetivos como reduo de overhead de comunicao e sobrepor


a latncia de comunicao com o tempo de computao.

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

(3DFD) Code with an Isotropic (ISO). Julho. Disponvel em: <http:

//intel.ly/29yaUZx>.

ARAYA-POLO, M., RUBIO, F., DE LA CRUZ, R., et al., 2009, 3D Seismic Ima-

ging Through Reverse-Time Migration on Homogeneous and Heterogene-

ous Multi-Core Processors,Scientic Programming - High Performance


Computing with the Cell Broadband Engine, v. 17, pp. 185198.
BALAY, S., ABHYANKAR, S., ADAMS, M. F., et al., 2016.  PETSc Web page.

http://www.mcs.anl.gov/petsc, Junho. Disponvel em: <http://www.

mcs.anl.gov/petsc>.

BOARD, O. A. R., 2016. OpenMP (Open Multi-Processing). Julho. Disponvel

em: <http://openmp.org/wp/about-openmp/>.

BORGES, L., THIERRY, P., 2016. 3D Finite Dierences on Multi-core Proces-

sors. Julho. Disponvel em: <https://software.intel.com/en-us/

articles/3d-finite-differences-on-multi-core-processors>.

BUETTNER, D., ACQUAVIVA, J.-T., WEIDENDORFER, J., 2013, Real Asyn-

chronous MPI Communication in Hybrid Codes through OpenMP Com-

munication Tasks, 2013 International Conference on Parallel and Distri-


buted Systems, pp. 208  215.
BULCO, A., 2004, Modelagem e Migrao Reversa no Tempo Empregando Ope-
radores Elsticos e Acsticos. Tese de Doutorado, COPPE/UFRJ, Rio de
Janeiro, RJ, Brasil.

66
CABEZAS, J., ARAYA-POLO, M., NAD NACHO NAVARRO, I. G., et al., 2009,

High-Performance Reverse Time Migration on GPU, 2009 International


Conference of the Chilean Computer Science Society (SCCC).
CERJAN, C., KOSLOFF, D., KOSLOFF, R., et al., 1985, A Nonreecting Boun-

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

MPI/OpenMP application on multi-core clusters, Computational Sci-


ence, v. 1, n. 3, pp. 168174.
COMMITTEE, M., 2016. Message Passing Interface (MPI). Julho. Disponvel

em: <http://www.mpi-forum.org/>.

CUNHA, P. E. M., 1997,Estratgias ecientes para migrao reversa no tempo pr-


empilhamento 3-D em profundidade pelo mtodo das diferenas nitas.
Dissertao de Mestrado, PPPG/UFBA, Salvador, BA, Brasil.

Migrao Reversa no Tempo na Determinao das Amplitu-


DA SILVA, J. J., 2009,

des de Reexo em Funo do ngulo de Incidncia. Tese de Doutorado,


COPPE/UFRJ, Rio de Janeiro, RJ, Brasil.

DE LA CRUZ MARTNEZ, R., 2015, Leveraging Performance of 3D Finite Die-


rence Schemes in Large Scientic Computing Simulations. Tese de Dou-
torado, Universitat Politcnica de Catalunya.

DE MEDEIROS LARA, M. A., 2012, Paralelizao de um Algoritmo de Propagao


da Onda Acstica 2D Usando MPI. Dissertao de Mestrado, COPPE/U-
FRJ, Rio de Janeiro, RJ, Brasil.

DE OLIVEIRA FORTUNA, A., 2000, Tcnicas computacionais para dinminca


dos uidos. So Paulo, EdUSP.

DE SOUZA SILVA, B., 2014, Avaliao de Operadores Convolucionais na Soluo


da Equao Acstica da Onda. Dissertao de Mestrado, COPPE/UFRJ,
Rio de Janeiro, RJ, Brasil.

DONGARRA, J., FOSTER, I., FOX, G. C., et al., 2003, Sourcebook of Parallel
Computing. Morgan Kaufmann Publishers.

DOS SANTOS, R. H. M., FIGUEIR, W. M., 2006, Modelagem acstica bidi-

mensional usando diferentes parametrizaes de campos de velocidades,

Revista Brasileira de Geofsica, v. 24, n. 1, pp. 103115.

67
EBERLY, D., 2016. Derivative Approximation by Finite Dierences. Janeiro.

Disponvel em: <http://www.geometrictools.com/Documentation/

FiniteDifferences.pdf>.

EICHENBERGER, A., MELLOR-CRUMMEY, J., SCHULZ, M., et al., 2014,

OMPT: An OpenMP Tools Application Programming Interface for Perfor-


mance Analysis. Relatrio tcnico, OpenMP Architecture Review Board.
EIJKHOUT, V., VAN DE GEIJN, R., CHOW, E., 2011, Introduction to High-
Performance Scientic Computing. lulu.com. http://www.tacc.utexas.
edu/~eijkhout/istc/istc.html.

FARIA, E. L., 1986,Migrao Antes do Empilhamento Utilizando Propagao Re-


versa no Tempo. Dissertao de Mestrado, PPPG/UFBA, Salvador, BA,
Brasil.

FLETCHER, C. A. J., 1992, Computational Techniques for Fluid Flows Dynamics,


v. 1 e 2. Springer-Verlag Berlin, Heidelberg.

GRANDJEAN, A., UAR, B., 2014, On Partitioning Two Dimensional Finite

Dierence Meshes for Distributed Memory Parallel Computers, 22nd Eu-


romicro International Conference on Parallel, Distributed, and Network-
Based Processing (PDP 2014), pp. 916.
GROPP, W., LUSK, E., DOSS, N., et al., 1996, A high-performance, portable

implementation of the MPI message passing interface standard, Parallel


Computing, v. 22, n. 6, pp. 789828.
HAGER, G., WELLEIN, G., 2010, Introduction to High Performance Computing
for Scientists and Engineers. CRC Press.
HEMPEL, R., WALKER, D. W., 1999, The emergence of the MPI message passing

standard for parallel computing, Computer Standards & Interfaces, v. 21,


n. 1, pp. 5162.

HOEFLER, T., LUMSDAINE, A., 2008, Overlapping communication and compu-

tation with high level communication routines, 8th IEEE International


Symposium on Cluster Computing and the Grid, pp. 572577.
IOGP, 2016, An overview of marine seismic operations. Relatrio Tcnico 448,

The International Association of Oil and Gas Producers, Londres, UK,

Janeiro. Disponvel em: <http://www.ogp.org.uk/pubs/448.pdf>.

68
LU, L., MAGERLEIN, K., 2013, Multi-level Parallel Computing of Reverse Time

PPoPP '13 Proceedings


Migration for Seismic Imaging on Blue Gene/Q,

of the 18th ACM SIGPLAN symposium on Principles and practice of


parallel programming, pp. 291292.
MEUER, H., STROHMAIER, E., DONGARRA, J., et al., 2016. TOP500. Dis-

ponvel em: <https://www.top500.org/>.

MINKOFF, S. E., 2002, Spatial parallelism of a 3d nite dierence Velocity-stress

elastic wave propagation code, SIAM Journal on Scientic Computing,


v. 24, n. 1, pp. 119.

MOCZO, P., KRISTEK, J., HALADA, L., 2004, The Finite-Dierence Method for
Seismologists. An Introduction. Bratislava, Comenius University.

MUCCI, P., 2016. Performance Application Programming Interface (PAPI). Dis-

ponvel em: <http://icl.cs.utk.edu/papi/>.

MUFTI, I. R., 1990, Large-scale three-dimensional seismic models and their inter-

pretive signicance, Geophysics, v. 55, pp. 11661182.


OSU, 2016. MVAPICH2: MPI over InniBand, Omni-Path, Ethernet/iWARP,

and RoCE. Disponvel em: <http://mvapich.cse.ohio-state.edu/>.

PAUL, S. R., MELLOR-CRUMMEY, J., ARAYA-POLO, M., et al., 2015, Perfor-

mance Analysis and Optimization of a Hybrid Distributed Reverse Time

The International Conference for High Perfor-


Migration Application,

mance Computing, Networking, Storage and Analysis.


PAUL, S. R., ARAYA-POLO, M., MELLOR-CRUMMEY, J., et al., 2016, Per-

formance Analysis and Optimization of a Hybrid Seismic Imaging Ap-

plication, ICCS 2016. The International Conference on Computational


Science, v. 80, pp. 818.
PHADKE, S., RAMANJULU, M., 2011, 3D Acoustic and Elastic Wave Mode-

ling on a High Performance Computing System, The 2nd South Asian


Geoscience Conference and Exhibition.
PHADKE, S., BHARDWAJ, D., YERNENI, S., 1999, 3D Seismic Modeling in

a Message Passing Environment,Centre for Development of Advanced


Computing, Pune University Campus.
PJESIVACGRBOVIC, J., ANGSKUN, T., BOSILCA, G., et al., 2005, Perfor-

mance Analysis of MPI Collective Operations. In: 19th IEEE Internati-


onal Parallel and Distributed Processing Symposium.

69
QAWASMEH, A., CHAPMAN, B., HUGUES, M., et al., 2015, GPU Technology

Applied to Reverse Time Migration and Seismic Modeling via OpenACC,

PMAM '15 Proceedings of the Sixth International Workshop on Program-


ming Models and Applications for Multicores and Manycores, pp. 7585.
REYNOLDS, A. C., 1978, Boundary conditions for the numerical solution of wave

propagation problems, Geophysics, v. 43, n. 6, pp. 10991110.


SAAD, Y., 2003, Iterative Methods for Sparse Linear Systems. Society for Industrial
and Applied Mathematics.

SERCEL, 2016. Disponvel em: <http://www.sercel.com/about/Pages/

what-is-geophysics.aspx>.

SHENDE, S. S., MALONY, A. D., 2006, The TAU Parallel Performance Sys-

tem, International Journal of High Performance Computing Applicati-


ons, v. 20, n. 2, pp. 287331.
SUBOTIC, V., SANCHO, J. C., LABARTA, J., et al., 2010, A simulation fra-

mework to automatically analyze the communication-computation overlap

in scientic applications, 2010 IEEE International Conference on Cluster


Computing, pp. 275283.
TACC, 2016. Disponvel em: <URL:http://www.tacc.utexas.edu>.

THOMAS, J. E., 2004, Fundamentos de Engenharia de Petrleo. Editora Interci-

ncia.

VAIDYANATHAN, K., KALAMKAR, D. D., PAMNANY, K., et al., 2015, Im-

proving Concurrency and Asynchrony in Multithreaded MPI Applicati-

ons Using Software Ooading, SC '15 Proceedings of the International


Conference for High Performance Computing, Networking, Storage and
Analysis, , n. 30.
YANG, C.-T., HUANG, C.-L., LIN, C.-F., 2011, Hybrid CUDA, OpenMP, and

MPI parallel programming on multicore GPU clusters, Computer Phy-


sics Communications Special Edition for Conference on Computational
Physics Kaohsiung, v. 182, n. 1, pp. 266269.
YANG, L. T., GUO, M., 2005, High-Performance Computing: Paradigm and In-
frastructure. Wiley-Interscience.

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-

rado, University of Illinois, Urbana, Illinois, United States.

71

You might also like