INSTITUTO DE INFORMÁTICA
PROGRAMA DE PÓS-GRADUAÇO EM COMPUTAÇO
GUILHERME PERETTI PEZZI
Ambientes de Programação Paralela
que Suportam Divisão-e-Conquista
TrabalhoIndividual I
TI-1225
Prof. PhilippeOlivierAlexandre Navaux
Orientador
Prof. Niolas Maillard
Co-orientador
LISTA DE ABREVIATURAS E SIGLAS . . . 5
LISTA DE FIGURAS. . . 7
RESUMO . . . 9
RESUMO . . . 11
1 INTRODUÇO . . . 13
1.1 O modelo de Divisão e Conquista. . . 14
1.2 Exemplos de problemas resolvidos om D&C . . . 15
1.3 Vantagens e desvantagens do modelo D&C . . . 16
1.4 Ambientes para programação paralela e trabalhos relaionados 17 2 DIVISO E CONQUISTA EM MODELO DE MEMÓRIA COM- PARTILHADA . . . 19
2.1 Cilk . . . 19
2.1.1 Deniçãodo modelo tratado . . . 20
2.1.2 Meanismos ofereidospara expressar o paralelismo . . . 21
2.1.3 Meanismode esalonamento. . . 21
2.1.4 Exemplosde ódigo . . . 21
2.1.5 Apliaçõesimplementadas . . . 22
2.2 Satin . . . 23
2.2.1 Deniçãodo modelo tratado . . . 23
2.2.2 Meanismos ofereidospara expressar o paralelismo . . . 23
2.2.3 Meanismos de esalonamento . . . 23
2.2.4 Exemplode ódigo . . . 24
2.2.5 Apliaçõesimplementadas . . . 24
2.3 Charm++ . . . 25
2.3.1 Deniçãodo modelo tratado . . . 25
2.3.2 Meanismos ofereidospara expressar o paralelismo . . . 25
2.3.3 Meanismode esalonamento. . . 26
2.3.4 Exemplosde ódigo . . . 27
2.3.5 Apliaçõesimplementadas . . . 27
2.4 Ambientes derivados . . . 28
2.4.1 Cilk-NOW . . . 28
3.1
MAP 3 S
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.1.1 Meanismos ofereidospara expressar o paralelismo . . . 31
3.1.2 Meanismode esalonamento. . . 32
3.1.3 Apliaçõesimplementadas . . . 32
3.2 MPI 1.2 . . . 32
3.2.1 Deniçãodo modelo tratado . . . 32
3.2.2 Meanismos ofereidospara expressar o paralelismo . . . 33
3.2.3 Exemplode ódigo . . . 33
3.2.4 Apliaçõesimplementadas . . . 33
3.3 MPI-2 . . . 34
3.3.1 Meanismos ofereidospara expressar o paralelismo . . . 34
3.3.2 Meanismos de esalonamento . . . 34
3.3.3 Exemplosde ódigo . . . 34
3.4 Ambientes derivados . . . 35
3.4.1 Jade . . . 35
3.4.2 Adaptive-MPI . . . 36
4 COMPARAÇO ENTRE OS AMBIENTES . . . 37
4.1 Meanismos para riação de tarefas . . . 37
4.2 Meanismos de sinronização . . . 38
4.3 Meanismos de esalonamento. . . 38
4.4 Tabelas omparativas . . . 39
4.5 Failidade de uso om o modelo D&C . . . 40
4.6 Implementação de apliações D&C om MPI-2 . . . 40
5 CONSIDERAÇÕES FINAIS. . . 43
SIMD Single Instrution Multiple Data
MIMD Multiple Instrution Multiple Data
SMP Symmetri Multi-Proessor
D&C Divisão-e-Conquista
DAG Direted Ayli Graph
B&B Branh-and-Bound
WAN Wide AreaNetwork
NOW Network of Workstations
Figura1.1: Exeução de uma apliaçãodo tipoD&C. . . 15
Figura1.2: Apliação D&C vista omo um DAG.. . . 15
Figura2.1: Esquema de ompilação e ligaçãodos programas Cilk . . . 19
Figura2.2: Exemplo de omputação om múltiplos uxos noCilk. . . 20
Figura2.3: Código Cilk de uma função para álulo do n-ésimo número de Fibonai . . . 22
Figura2.4: Exemplo de ódigo Cilk de utilização de inlets . . . 22
Figura2.5: Código Satin de um método para o álulo do n-ésimo número de Fibonai . . . 24
Figura2.6: Código Charm++ para denição de umamensagem . . . 27
Figura2.7: Código Charm++ para denição de um hare . . . 27
Figura2.8: Código Charm++ para denição de um branh-oe hare . . . . 27
Figura2.9: Código Cilk-NOW para oálulo don-ésimo númerode Fibonai 28 Figura3.1: Código MPI que efetua troa de uma mensagem entre dois proessos MPI . . . 33
Figura3.2: Código MPI-2 que mostraa riaçãoreursiva de proessos . . . . 34
Figura3.3: Código MPI-2 reursivo para o álulo do n-ésimo número de Fibonai . . . 35
Figura4.1: Código para álulo do n-ésimo número de Fibonai:
Aespeiaçãoeimplementaçãodeumprogramaparalelosãoproblemasomple-
xoseaindaemaberto. Existemváriaspropostasdearquiteturaemodelosdeprogra-
mação paralela: troa de mensagens, memória ompartilhada, hamada remota de
método,et. UmaarquiteturaquevemdespertandointeressedeestudoéoGrid,que
permite agregaruma quantidade de reursos que variaao longo do tempo. Apesar
dessa araterístia aresentar exibilidade ao sistema, é preiso enontrar um
ambiente e um modelo de programação adaptado para essa arquitetura. O modelo
de programação esolhido para este estudo é o de Divisão-e-Conquista (D&C),
pois permite dividir um problema em sub-problemas menores de forma reursiva
e dinâmia. Essas araterístias tornam o modelo adaptado para aproveitamento
de reursos alteraram-sedinamiamente, omo é oaso doambientede Grid.
Dado o ontexto, o objetivo deste trabalho é fazer um busa de ambientes
paralelosque suportam D&C euma análise omparativados ambientes estudados.
Neste trabalho são araterizados, em ada ambiente: os operadores disponíveis
para expressar o paralelismo, as arquiteturas alvo (SMP, Cluster, Grid, ...) e o
meanismo de sinronização dos proessos aoiniiar e nalizar astarefas. Por m,
éfeita uma omparação entre os modelos, reursos ofereidos e uma análiserítia
dafailidadedeuso deada ambientepraprogramaçãoD&C.Oresultadoesperado
deste trabalho é que ele sirva omo base para adaptar o modelo de programação
D&C para um ambiente de troa de mensagens e para desenvolver um meanismo
de esalonamento de apliações D&C om MPI-2.
Palavras-have: Programação paralela, ambiente de programação, divisão-e-
RESUMO
Designing and programming parallel appliations are hallenging and open
problems. Today, there are many parallel arhitetures and programming
models: message passing, shared memory, remote proedure all, ...An emerging
arhiteture is the Grid, that enables to share, selet and aggregate a wide variety
ofdynami resoures. This arhiteture has greatexibility but itsneeded tond
suitable environment and programming model. The modelhosen for this work is
Divide-and-Conquer, beause it enables todivide a given problem in sub-problems
thatanbesolvedinparallel. Thismodelsolvesproblemsinadynamiandreursive
way, whatmakesit adapted for the Grid environment.
In this ontext, the objetives are to nd and ompare parallel programming
environments that support divide-and-onquer. It will be haraterized in eah
environment: availableoperators toexpress parallelism,target arhitetures (SMP,
Cluster,Grid,)andthemehanismsavailableforproesssynhronization. Finally,a
omparisonwillbemadeamongthemodels, resouresoeredand aritialanalysis
abouttheusabilityofeahprogrammingenvironment. Theexpetedresultistouse
this work as base for adapting the D&C programmingmodel toa message-passing
environmentand developinga shedulingmehanism for MPI-2 appliations.
Palavras-have: parallel programming, programming environments, divide-and-
1 INTRODUÇO
A omputação paralela vem sendo amplamente utilizada para atender neessi-
dades de apliações que exigem muito poder omputaional. A ada dia surgem
propostas de novas máquinas e modelos de arquiteturas paralelas, om diferentes
quantidades de proessadores, topologias e redes de interonexão. O universo de
arquiteturas existentes é grande e elas são normalmente agrupadas omo: SIMD e
MIMD.Máquinas SIMDpossuemum úniouxode instruçãoapliadosamúltiplos
dadosenormalmentesãoespeíasparaum tipodeapliação. AsMIMDpossuem
múltiplosuxosdeinstruçãosendoexeutadosemparalelo. Atualmenteasmáquinas
MIMD são as mais utilizadas e podem ser divididas omo: Multi Proessadores
Simétrios(SMP), Vetoriais, Massivamenteparalelas (MPP), Agregados(Clusters)
eGradesomputaionais(Grids). AsmáquinasSMP,VetoriaiseMPPnormalmente
forneem ambientes para programação e uso eiente, porém são arquiteturas pro-
prietárias e om alto usto de montagem e manutenção. Já os Agregados e as
Grades onsistem basiamente de diversas unidades de proessamento, que podem
ser independentes, interonetadas por uma rede de omuniação. As prinipais
vantagensnessemodelosãoustosbaixosealtaesalabilidade,istoé,apossibilidade
defailmentealterar,aolongodotempo,aquantidadedeunidadesdeproessamento
da arquitetura. No entanto, a omputação é baseada em memória distribuída e
neessita programação da troa de informações entre os proessadores, o que pode
ser uma tarefa muito omplexa.
Para failitara programaçãoe permitir o uso eiente dessas máquinas, podem
ser utilizadosdiferentes modelosde programação. OmodeloBagof Tasks baseia-se
naexeução onorrentede tarefasdisjuntas, ouseja,quandonãoháneessidadede
omuniação durantea exeução de ada tarefa. No modelo Pipeline as tarefas são
divididas em partes e ada proessador exeuta uma parte. Os dados de entrada
são oloados no primeiro proessador e repassados entre os proessadores, após a
exeução de ada parte. No modelo Fases Paralelas as apliações exeutam um
determinadonúmero de etapas,divididas em duas fases: proessamento e sinroni-
zação. OmodeloMestre/Esravo entralizaadistribuiçãoeontroledaexeuçãodo
trabalhoemum únio proessador. Éindiadopara problemasuja interaçãoentre
osproessos nãosejagrandeenão ausesobrearga noproesso mestre. Nomodelo
de Divisão e Conquista (D&C) o problema é dividido em problemas menores, que
são distribuídos entre os proessadores disponíveis e o seu resultado é ombinado
para obter a resposta do problema original. Nesse modelo os proessos podem se
omuniar aolongo da exeução, sem passar pelo mestre.
Apliações trivialmente paralelizáveis e sem dependênia de dados entre as
Esse modelo é adequado, por exemplo, para exeução de ltros gráos em uma
grandequantidadedeimagensdepequenoporte,paratestarprimalidadedenúmeros
(riptograa), et. Para o modelo Mestre/Esravo, india-se apliações omo
geraçãode frataise imagens(Ray-Traing),poissuaresolução pode ser ontrolada
por um proesso mestre que envia as informações neessárias para os proessos
esravos e junta os proessos pariais. O modelo de D&C é mais abrangente,
pois engloba o modelo Mestre/Esravo, e pode ser utilizado para implementação
deinúmerasoperaçõesqueenvolvemmatrizesetambémapliaçõesreursivas,entre
outras.
O modelo D&C pode ser utilizado para uma quantidade maior de apliações,
omparandoom Bagof Tasks eMestre/Esravo, eoferee a possibilidade de esa-
lonamento e riação dinâmia das tarefas. Por esse motivo, torna-se interessante
estudá-lo, bem omo os ambientes que suportam esse modelo. Dado o ontexto,
o prinipal objetivo deste trabalho é fazer um levantamento dos ambientes que
suportamD&C e,apartirdisso, umaanáliserítiaeomparativaentre asarate-
rístiasde ada ambiente.
EsteTrabalhoIndividualestádivididodaseguinteforma: oapítulo1apresenta
brevemente omodelo D&C utilizandoexemplose ontextualiza osprinipaisambi-
entes que suportam o modelo, denindo os que serão objeto de estudo ao longo do
texto. Oapítulo2édestinadoaosambientesdeprogramaçãoquesuportamD&C e
ofereemreursosdeprogramaçãonomodelodememóriaompartilhada. Oapítulo
3 é destinado os ambientes foados para omuniação om troa de mensagens. O
apítulo4têm o objetivo de fazeruma omparaçãoentre osmeanismos emodelos
de programação ofereidosporada ambiente estudado. Para onluir, serão feitas
análisese onsiderações sobre oestudo realizado.
1.1 O modelo de Divisão e Conquista
Dada uma instânia de um problema, ela é deomposta em sub-instânias
menores, que são resolvidas separadamente. A deomposição é feita até que o
sub-problema seja simples e sua solução imediata. Suas soluções pariais são
então ombinadas para se obter a solução dainstânia original do problema. Uma
denição reursiva paradado de entrada
e
pode ser esrita omo:Solução(
e
):sesimples(
e
)→
direto(e
)senão ombina( solução(parte
1
(e
)),solução(parte2
(e
)))A gura 1.1 mostra um exemplo simples de exeução de uma apliação tipo
D&C.É apresentada a exeução de um nível de reursão, dividida em4 passos, de
uma operação
⊕
efetuada em um vetor om duas posições. A reepção dos dados de entrada pelo proesso iniial (P 0
) está representada no passo 1. No passo 2,P 0
veria queo problema pode ser deomposto e ria 2proessos (
P 1
eP 2
),passandopartedoproblemaparaadaproesso. Nopasso3,
P 1
eP 2
veriamqueoproblemareebido é simples (no aso, um vetor unitário), exeutam a operação
⊕
sobre osdados e retornam os resultados pariais para
P 0
que, então, ombina os resultadospariaispara gerar um vetor om o resultado nal (passo 4).
Uma formaomum de representar apliações D&C é através de grafos aílios
dirigidos, onheidos omo Direted Ayli Graphs (DAGs). Em um DAG, os
Entrada
e = v 1 ⊕ v 2 = a b ⊕ c
d
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ M
M _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __
saída
s = a ⊕ c b ⊕ d
_ _ _ _ _ _ _ _ _ M
M _ _ _ _ _ _ _ __
Passo 1 Passo 2
e
@
@ @
@ @
@ @
P 0
P 0
parte
1 (e)
= a ⊕ c
parte
2 (e)
= b ⊕ d
2
2 2 2 2 2 2 2 2 2 2 2 2
P 1 P 2
Passo 3 Passo 4
P 0
solução(parte
1 (e)
)= a ⊕ c
EE
solução(parte
2 (e)
)= b ⊕ d
YY 22
22 22 22 22
22 2
P 1 P 2 P 0
s
=ombina(solução(parte
1
(e
)),solução(parte
2
(e
) )`` @@
@@ @@ @
Figura1.1: Exeução de uma apliaçãodo tipoD&C.
GFED
@ABC P 0
~~}} }} }} }} }
A
A A A A A A A A
GFED
@ABC P 1 GFED @ABC P 2
Figura 1.2: ApliaçãoD&C vistaomo um DAG.
eles. A gura 1.2 mostra a mesma apliação da gura 1.1, porém vista omo um
DAG: aexeução de
P 0
depende de dados quevãoser alulados porP 1
eP 2
. Valeressaltarqueosvértiesnãorepresentam proessadores,esimproessos,quepodem
ounão estar no mesmoproessador.
1.2 Exemplos de problemas resolvidos om D&C
Nesta seção serão apresentados, de forma breve, alguns problemas e uma
proposta de solução utilizando o D&C. O objetivo é ontextualizar omo e em
que tipo de problemas a abordagemD&C pode ser apliada. Maiores detalhes de
implementaçãonão são tratadas.
•
operações em seqüênias de números: os números são armazenados em umvetorquepodeserfailmentedivididoentreosproessadoresdisponíveis. Após
aoperação,asoluçãoéobtidaapartir daombinaçãodos resultados pariais,
omoilustrado nagura 1.1;
•
teste de primalidade de Eratóstenes: ada proessador iniia a maração dosfeitaspor todos os proessos;
•
ordenamento de números - utilizando o algoritmo Buket Sort: divide-se ovetor emregiõesdomesmo tamanhoeatribui-seum buket para ada região.
Após,ordena-se ada região e onatena-se os bukets;
•
ray traing: omo ada linha da imagem pode ser gerada em paralelo, adaproesso gera uma parte da imagem. No nal do proessamento, ombina-se
aspartes para gerar asimagens nais;
•
busade elemento emárvore: ada bifuração daárvore pode gerar um novoproesso (em outro proessador) que busa o elemento na sua sub-árvore.
Assim que o elemento for enontrado, envia-se mensagens para os demais
proessos para sinalizar om do trabalho;
•
aixeiro viajante (TSP):gera-se uma árvore om todos os possíveis aminhoseiniia-se om um valorinnito para o menor aminho. Perorre-se aárvore
gerandonovosproessospara asbifurações, omonabusa emárvore, alu-
landoovalordo aminho. Ao ompletarum aminho, atingindoum nófolha,
ompara-seo valordesse aminhoom ovalor domenor aminhoe,aso seja
menor,avisa os demais proessos quefoi enontrado um aminhoom menor
usto.
Os exemplos aima mostram que a lasse de problemas resolvidos pelo modelo
D&C abrange apliaçõesbastanteutilizadas,omoéoasooTSP,queexigegrande
poder omputaional. Porém existem outras apliações que são adequadas para o
modeloD&C e,porisso,napróximaseçãoserãodisutidasvantagensedesvantagens
domodelo.
1.3 Vantagens e desvantagens do modelo D&C
Estaseção temomoobjetivofazerum balançogeraldomodeloD&C,quepode
ser usado para veriar quando deve-se utilizá-lo.
Prinipaisvantagens:
•
riaçãodinâmiadeproessostornapossívelaproveitarreursosquesealteramdinamiamenteom o tempo;
•
possibilidade de alterar a granularidade da tarefa exeutada pelos proessosatravésdaalteração daprofundidadedaárvore. Autilizaçãode umagranula-
ridadepequena de tarefa, emonjuntoom um meanismo de balaneamento
de arga, permite um melhoraproveitamentode reursos emambientes hete-
rogêneos;
•
pode-se alterar também a largura da árvore para ontrolar o grau deparalelismoda apliação;
•
possibilita implementação de apliações paralelas om dependênias entre astarefas.
•
amodelagemeimplementaçãodasinronizaçãoentreastarefaspodesetornarum trabalhoárduo;
•
pode neessitarajustedeparâmetros,omoprofundidadedareursão,para seadequarao ambiente de exeução eobter um resultado eiente.
Apósessaanálise,serãobusadosambientesdeprogramaçãoexistenteseveriar
osmeanismos ofereidosparaprogramaçãode apliaçõesnomodeloD&C,am de
melhoraproveitar as vantagens e minimizarasdesvantagens domodelo.
1.4 Ambientes para programação paralela e trabalhos relai-
onados
Nestaseçãoseráfeitoumlevantamentodosprinipaisambientesdeprogramação
paralela enontrados na literatura e uma análise da sua adequação para a progra-
mação no modelo D&C. A partir dessa lista, serão esolhidos os ambientes mais
adaptadospara uma análisemais detalhada.
Na déada de 1990 foram propostos diversos ambientes de programação
paralelosbaseados em C e C++. O ambiente CC++ (CHANDY; KESSELMAN,
1992) oferee onstruções paralelas e utiliza C++ nas partes seqüeniais. Já o
Mentat (GRIMSHAW, 1993) permite espeiar objetos seqüeniais e paralelos,
aumentando o ontrole do programador sobre o paralelismo. O ambiente DECK
(BARRETO;NAVAUX;RIVIÈRE,1998)permiteprogramarapliaçõesemlusters
e oferee uma linguagem orientada à objetos hamada DPC++ (CAVALHEIRO
et al., 1995). O Athapasan (CAVALHEIRO; GALILÉE; ROCH, 1998) é um
ambiente de programaçãopara arquiteturasom memóriaompartilhadaepermite
avaliar o usto de exeução de um ódigo sem a neessidade de um modelo de
máquina. Também foram propostos ambientes mais restritos, omo o Parallel-
C++ (JO; GEORGE; TEAGUE, 1991) que oferee paralelismo através da
semântia "o-begin/o-end" e o OOMDC/C que oferee apenas omuniação
de objetos por troa de mensagens. O ABCL/1 (YONEZAWA, 1990) oferee
objetos onorrentes orientados a mensagens, que podem se omuniar através
de mensagens bloqueantes, não-bloqueantes e de futures. O Charm (KALE
et al., 1994) foi uma das primeiras implementações do oneito de Atores, que
são objetos onorrentes que se omuniam apenas por troa de mensagens.
Charm++ (KALE; KRISHNAN, 1996) é baseado noCharm e suporta diferentes
modos de ompartilhamento de informações. Ele reúne reursos propostos em
outros ambientes, omo objetos seqüeniais e paralelos, omuniação por troa de
mensagens e futures. Por esse motivo, o Charm++ será estudado om maiores
detalhes no próximoapítulo. OCilk (BLUMOFE etal., 1995) é um ambiente de
programaçãoparalelo foado em arquiteturas SMP. Ele é baseado na linguagem C
eoferee onstruções para representar o paralelismo para apliaçõesD&C.O Cilk
oferee também um esalonador de proessos que é provado ser eiente (VEE;
HSU, 1999) e, por isso, esse ambiente será objeto de um estudo mais detalhado.
Beseando-se no Cilk, foi desenvolvido um ambiente para exeução de programas
em arquiteturas om memória distribuída e aproveitamento de reursos oiosos,
hamadoCilk-NOW (BLUMOFE; LISIECKI, 1997).
Outra linguagem que vem despertando interesse de pesquisa em ambientes de
Atlas (BALDESCHWIELER; BLUMOFE; BREWER, 1996) fornee um onjunto
de lasses Java e seu modelo de programação foi baseado no Cilk, que permite
programar apliações do tipo D&C. O Javelin 3 (NEARY; CAPPELLO, 2002)
também fornee um onjunto de lasses Java para programar apliações Mes-
tre/Esravo e Branh-and-Bound (B&B). O ambiente ProAtive (CAROMEL;
KLAUSER; VAYSSIÈRE, 1998) oferee uma bibliotea de programação Java que
implementou reentemente uma API para desenvolvimento de apliações B&B.
O Satin (NIEUWPOORT; KIELMANN; BAL, 2000) é um ambiente baseado na
plataformaIbis (NIEUWPOORT et al., 2002) e foaapliaçõesdo tipo D&C. Os
três ambientes são projetados para exeutar apliações emambientes om redes de
interonexãoheterogêneas. Para isso, oJavelin 3eoAtlas utilizamum algoritmo
de esalonamento hierárquio em árvore. Já o Satin, além de implementar um
esalonadorhierárquio, implementatambémoutrosalgoritmosde esalonamentoe
apresentaumresultado mais eienteparaambientes om redesheterogêneas 1
. Por
foar apliações D&C e omparar diversos algoritmos de esalonamento, o Satin
também será detalhado nopróximo apítulo.
A bibliotea MPI é um padrão onsolidado de programação e já foi utilizada
para programar diversas apliações que neessitam minimizar a latênia da
omuniação em máquinas om memória distribuída. Na implementação mais
antigaeonheidadabibliotea(norma1.2)nãoeramofereidosreursos suientes
paraimplementar apliaçõesD&C.Alguns ambientes ofereem meios parafailitar
a programação om MPI, omo é o aso do
MAP 3 S
(Advaned Pattern-Based Parallel Programming System) (MEHTA; AMARAL; SZAFRON, 2005), porémainda não existe um ambiente adequado para programação om MPI para D&C.
No entanto, a norma 2.0 oferee meanismos para riação reursiva de proessos,
que pode servir omo base para apliações D&C. Pelo fato de ser um ambiente
onheido e pela reente implementação da norma 2.0, o MPI tem um grande
potenialpara D&C e tambémserá estudado om mais detalhes noapítulo3.
O apítulo a seguir apresentará os ambientes de programação om modelo de
memóriaompartilhadamenionadosanteriormente.
1
2 DIVISO E CONQUISTA EM MODELO DE
MEMÓRIA COMPARTILHADA
Este apítulo apresenta alguns dos ambientes que suportam programação no
modelo D&C utilizando memóriaompartilhada e ofereem abstrações para a sin-
ronização das tarefas. Apesar de utilizar modelo de programação de memória
ompartilhada, alguns dos ambientes permitem exeutar apliações em ambientes
ommemóriadistribuída. Cadaambienteofereediferentes meanismosdeomuni-
ação,queserãodetalhados nas próximasseções, om diferentes funionalidades. O
objetivo deste apítulo é analisar os meanismos ofereidos e veriar suas funio-
nalidades para uma posterioromparação entre eles.
2.1 Cilk
Cilk é um ambiente de programação para múltiplos uxos de exeução (multi-
threaded) e foi proposto na déada de 1990 (BLUMOFE et al.,1995). Ele estende
a linguagem C om estruturas para o ontrole do paralelismo e seu funionamento
estáesquematizadonagura2.1. Asestruturasde programaçãoofereidaspeloCilk
foram projetadas para desenvolvimento de apliações D&C e serão detalhadas na
seção 2.1.2. O Cilk foi desenvolvido para exeutar apliações D&C em máquinas
SMPommemóriaompartilhada. Amodelagemdoalgoritmonesse ambienteéno
estilo de passagem de uxo explíita (ontinuation-passing). Um uxo de exeução
pode riar novos uxos e ontinuar sua exeução emparalelo.
Ambiente de
exeução Cilk
b.ilk
//
ilk2b.
//
g b.o//
ldb
//
ompilador
fonte para fonte
ompilador C ligador
Figura2.1: Esquema de ompilação e ligaçãodos programasCilk
OCilkofereeumesalonadorde tarefasqueseenarregade aloar osproessos
para os proessadores disponíveis da máquina SMP, através da utilização de um
meanismo de roubo de tarefas (Work Stealing). Esse meanismo mantém listas
proessadoronstataquesualadeproessosestávazia,elerequisitatarefasprontas
de outro proessador (roubo). Como o ambiente de exeução se ompõe de uma
máquinaom memóriaompartilhada,a migraçãode proessos é loal. Baseando-
se nisso, os autores formalizaram a modelagem do esalonador e veriaram a sua
eiênia de formateória eprátia (VEE; HSU,1999).
2.1.1 Denição do modelo tratado
Esta seção apresenta as prinipais araterístias do modelo de programação
no Cilk. Uma espeiação mais detalhada pode ser enontrada em (BLUMOFE;
LEISERSON, 1994).
Uma omputação om múltiplos uxos de exeução pode ser vista omo um
onjunto de uxos, que são ompostos por uma seqüênia de tarefas unitárias.
Essa seqüênia deve ser exeutada na ordem prevista e não pode ser exeutada
em paralelo. Para exeutar um uxo é neessário aloar um espaço de memória,
hamado"Quadro de Ativação" (Ativation Frame),que será utilizadopara arma-
zenar osdados alulados. Durantea exeução de um uxo, este pode riar outros
eada riaçãode um novo éomo umahamadade sub-rotina, exeto quearotina
pode exeutar onorrentemente om a sub-rotina hamada. Fluxos riados são
hamadosde lhos e podem ser riados quantos foremneessários. Dessa forma,os
uxos podem ser organizadosemuma hierarquia de árvore de ativação, omopode
ser visto na gura 2.2. As arestas ontínuas representam a dependênia entre as
tarefas. Criaçãoesinronizaçãodeuxos são representadas porarestastraejadase
onduladasrespetivamente. NomodelodoCilk,assume-sequeumatarefapossuium
número máximo onstante de arestas de dependênia inidentes e que uma tarefa,
aoatingir um ponto emque uma dependênia ainda não está pronta, pára até que
sua dependênia seja satisfeita. É dito também que quando um uxo termina de
exeutara última tarefa, elemorre.
ONML
HIJK //ONML HIJK
//ONML HIJK // ONML HIJK //ONML HIJK
ONML HIJK
//ONML HIJK // ONML HIJK
OO O O O
ONML
HIJK //ONML HIJK
OO O O O
spawn
spawn
syn
syn
Figura 2.2: Exemplo de omputação om múltiplosuxos noCilk.
Um esalonamento de exeução determina quais proessadores de um
omputadorparaleloexeutamquaistarefasemadapassode tempo,sendoqueem
adapassoum proessadorpode exeutarnomáximo umatarefa. Oesalonamento
depende do modelo da apliação e do número de proessadores disponíveis na
máquina paralela. Para que um esalonamento seja válido, a ordem de exeução
da tarefa deve obedeer às restrições dadas pelas arestas do grafo da omputação.
Assume-sequeografodaapliaçãoéumDAG,demodoqueexistamesalonamentos
2.1.2 Meanismos ofereidos para expressar o paralelismo
Os uxos de exeução no ambiente Cilk são funções C não-bloqueantes que
podem riar um uxo lho. Para a riação de um novo uxo, deve ser utilizado
oomandoSpawn. Para asinronizaçãodouxo omseu lhoutiliza-seoomando
Syn, que funiona omo uma espéie de barreira. Um uxo é exeutado enquanto
tivertarefas para exeutar ouaté enontrar oomando Syn. Aoenontrar oSyn,
eleveriase olho já terminou aexeução (os dados estão prontos) e,neste aso,
ontinua sua exeução. Caso ontrário, ele aguarda até que o lho disponibilize os
dados.
O Cilk também possui um meanismo de trava (lok) para aesso a regiões
rítias de memória. Pode-se utilizá-lo através de uma variável do tipo
Cilk_lokvar e dos omandos Cilk_lok(variável) e Cilk_unlok(variável).
Pode-se utilizartambém um meanismo avançado hamadoinlets. Uminlet
éuma funçãointernade um proedimentoCilk quetrata osresultados de um uxo
riadoassimqueeleshegam. Oobjetivoprinipaldeutilizaruminletéqueexiste
a garantia de que todos os inlets de um proedimento exeutarão atomiamente
entreeles etambémemrelaçãoaoseu pai,istoé,nãoéneessáriopreoupar-seom
aessosonorrentes a variáveisatualizadas dentrodos inlets.
Também existe um meanismo de aborto (abort) que pode ser utilizado para
anelarumtrabalhoquepodejáter sidofeito. Porexemplo,noasode umabusa
em paralelo, assim que um uxo enontrar uma solução, elepode querer abortar a
busados outros uxos que estãofazendo o mesmo trabalho.
2.1.3 Meanismo de esalonamento
Parafazeroesalonamentodastarefas,oCilkutilizaummeanismode roubode
tarefas (Work Stealing) (BLUMOFE; LEISERSON, 1994). As tarefas no Cilk são
uxos que podem ser exeutados emqualquer proessador sem neessitar migração
de proessos, já quea arquitetura de exeuçãopossui memóriaompartilhada.
Comoobjetivodepermitiralularumlimitesuperiordotempodeexeuçãode
umaapliação,oCilkforneeparaousuárioummodeloalgorítmiododesempenho
da apliação baseado em medidas de trabalho e aminho rítio. O trabalho,
denotado por
T 1
,é o tempo usado para exeuçãodo programa emum proessador.Oaminhorítio,denotado por
T ∞
, éaquantidadetotalde temponeessárioparaa exeução em uma máquina om innitos proessadores. Essas medidas podem
ser utilizadas para prever de forma preisa o tempo de exeução de um programa
Cilk,omoémostrado em(VEE;HSU,1999). OesalonadordoCilkgaranteque o
tempo de exeução emuma máquina om
P
proessadores seja:T P = T 1 /P + O(T ∞ )
Porém,esselimiteéválidoapenasparaprogramasquenãoutilizamomeanismo
de lok.
2.1.4 Exemplos de ódigo
A gura 2.3 mostra um exemplo de ódigo esrito na linguagem do Cilk. O
trehode ódigo abaixofaz partede umprograma reursivo queservepara alular
o n-ésimo número de Fibonai. A semântia da linguagem é similar om a da
ilkserve paraidentiarum proedimentoCilk,ospawn serve praidentiar que
deve-se riar um novo uxo de exeução para função hamada. O omando syn
serveparaesperar osuxos lhosterminarem,garantindoqueosdados geradospor
eles possam ser utilizadosde formasegura pelopai.
ilk int fib (int n)
{
if (n < 2) return n;
else{
int x, y;
x = spawn fib (n-1);
y = spawn fib (n-2);
syn;
return (x+y);
}
}
Figura2.3: CódigoCilkdeumafunçãoparaálulodon-ésimonúmerodeFibonai
A gura 2.4 mostra um exemplo de utilização de um inlet. O resultado da
exeução desse ódigo é o mesmo do ódigo na gura 2.3, porém ele utiliza uma
função inlet para aumular os somatórios pariais.
ilk int fib (int n){
int x = 0;
inlet somador(int resultado){
x += resultado;
return;
}
if (n < 2) return n;
else{
somador( spawn fib (n-1) );
somador( spawn fib (n-2) );
syn;
return (x+y);
}
}
Figura2.4: Exemplo de ódigo Cilk de utilizaçãode inlets
2.1.5 Apliações implementadas
Esta seção apresenta alguma das apliações implementadas e exeutadas na
plataformaCilk.
•
Parallel make - foram exeutadas ompilaçõesdo próprio ompilador ilk2feitasexeuções utilizandoaté 4 proessadores e atingidoum speedup de
3.26
om o ilk2 e
3.11
om o tiny , onforme apresentado em (VEE; HSU, 1999);•
síntese de proteínas;•
jogadorde xadrez (Sorates).Essas são algumas das prinipais araterístias do ambiente Cilk que serão
omparadas om os outros ambientes ao longo do texto e no apítulo 4. A seção
seguinteapresentaoutroambientequeutilizaummodelodememóriaompartilhada
para programaçãohamado Satin.
2.2 Satin
OSatinéumambientedeprogramaçãobaseadoemJavaefoadonaexeuçãode
apliaçõesdo tipoD&C emambientes om memóriadistribuída (NIEUWPOORT;
KIELMANN; BAL, 2000). Ele foi desenvolvido utilizando a plataforma Ibis
(NIEUWPOORT et al., 2002), que objetiva melhorar o desempenho de apliações
Java distribuídas e permite o aproveitamento de reursos omputaionais que se
alteram dinamiamente. O Satin inorpora algumas das araterístias do Cilk e,
além disso, aresenta funionalidades neessárias para exeução em arquiteturas
sem memóriaompartilhada,que serãodetalhadas a seguir.
2.2.1 Denição do modelo tratado
O modelo de programação do Satin é uma extensão do modelo seqüenial de
programa Java e, assim omo o Cilk,o Satin não alteraa semântia dalinguagem.
Além disso, o Satin utiliza a própria sintaxe do Java pra expressar o paralelismo
sem aresentarmodiadoresnalinguagem,omo éfeito noCilk. Osmétodos que
podem ter potenialpara serem exeutados emparaleloestendem um objeto Satin,
não sendo neessário utilizar os meanismos de paralelismo do Java. Dessa forma,
a programação no Satin pode ser mais simples do que utilizar Java Threads ou o
meanismo de invoação remota de método (RMI), que não podem ser utilizados
em ombinação om o Satin. Adiionalmente, ele fornee objetos ompartilhados
através doRepMI (MAASSEN; KIELMANN; BAL, 2001).
2.2.2 Meanismos ofereidos para expressar o paralelismo
A programação de apliações no Satin pode ser feita utilizando apenas a
linguagem Java, sem a neessidade de novas onstruções. O Satin usa interfaes
maradoras para indiar que alguns métodos podem ser exeutados em paralelo e
uma lasse para poder expressar quando os métodos devem fazer a sinronização.
Essa interfae espeial é hamada de satin.Spawnable e a lasse que provê o
meanismo de sinronização syn() hama-se satin.SatinObjet. Apesar de
utilizar uma linguagem orientada a objetos, a semântia para expressar apliações
de D&C ébemsemelhantea doCilk.
2.2.3 Meanismos de esalonamento
O Satin implementa diversos meanismos de esalonamento, que são
(NIEUWPOORTetal.,2004). SãoomparadososalgoritmosdeRouboAleatóriode
Tarefas(Random Work Stealing),AfastamentoAleatóriode Tarefas(Random Work
Pushing),RouboHierárquiodeTarefasparaAgregados(Cluster-awareHierarhial
Work Stealing),RouboBaseado-na-argade Tarefas paraAgregados(Cluster-aware
Load-based Work Stealing), Roubo Aleatório de Tarefas para Agregados (Cluster-
awareRandomWorkStealing),RouboMúltiploAleatóriodeTarefasparaAgregados
(Cluster-aware Multiple Random Work Stealing) e o Roubo Adaptativo Aleatório
de Tarefas para Agregados (Adaptive Cluster-aware Random Work Stealing).
Destaam-se entre eles os algoritmos Roubo Aleatório de Tarefas para Agregados
e Roubo Adaptativo Aleatório de Tarefas para Agregados, por apresentarem os
melhoresdesempenhosemambientesomrede heterogêneas. ORouboAleatóriode
Tarefas para Agregados, apesar de não ter o melhor desempenho em pouos asos
omonguraçõesextremas,é bemmaissimples queoAdaptativo e,porisso, mais
adequadopara ser utilizado para esalonamentoemGrades.
2.2.4 Exemplo de ódigo
A gura 2.5 mostra um método programado no Satin para o álulo de um
número de Fibonai, semelhante ao ódigo apresentado em 2.3. O método fib é
aresentado à interfae satin.Spawnable, indiando que ele pode ser exeutado
em paralelo. A lasse Fib estende a lasse satin.SatinObjet que implementa o
meanismode sinronização. Desse modo,os objetosdalasse Fibpodem exeutar
ométodode sinronização syn().
interfae FibInter extends satin.Spawnable {
publi long fib(long n);
}
lass Fib extends satin.SatinObjet implements FibInter {
publi long fib(long n){
if (n < 2) return n;
else{
long x = fib(n - 1); //spawned
long y = fib(n - 2); //spawned
syn();
return (x+y);
}
}
}
Figura 2.5: Código Satin de um método para o álulo do n-ésimo número de
Fibonai
Pode-se pereber que o programa Satin (Figura 2.5) é semelhante ao programa
Cilk(Figura2.3), apesar de ser exeutado emambientes om memóriadistribuída.
2.2.5 Apliações implementadas
Em(NIEUWPOORT; KIELMANN; BAL, 2001) são apresentadas exeuções de
12 apliações D&C, entre elas: Fibonai, Ray Traer, TSP, N-Queens, fatores
paralela onetada por uma rede Myrinet. No entanto, foram utilizadas ligações
mais lentas em alguns nós para simular uma interonexão de longa distânia e
obter um ambiente similar auma gradede omputadores. Utilizando omeanismo
de balaneamento de arga do Satin, foi possível obter uma eiênia de 95% no
ambiente simulado,em relaçãoaoambienteom interonexõeshomogêneas.
2.3 Charm++
O desenvolvimento doambiente Charm++ (KALE; KRISHNAN, 1993) iniiou
na déada de 1990 e teve omo motivação oniliar duas tenologias que estavam
emergindo: orientação a objetos e proessamento paralelo. O Charm++ é um
ambiente de programaçãoparaleloorientadoa objetos queestende C++om ons-
truções para expressar o paralelismo. Ele foi baseado em um ambiente hamado
Charm (KALE et al., 1994), que apenas ofereia omuniação por troa de men-
sagens, e reuniu estruturas enontradas em outros ambientes. Essas estruturas
serviramparaenriqueeroparalelismoofereidopeloCharm++,queserádetalhado
aseguir.
2.3.1 Denição do modelo tratado
Ao ontrário dos ambientes vistos anteriormente, o Charm++ não é espeío
para apliações D&C. Ele suporta abstrações para modos espeíos de omparti-
lhamento de dados, assim omo suporta omuniação por troa de mensagens. Ele
utiliza uma estratégia de esalonamento orientada a mensagens, que é neessária
para apliações mais susetíveis a latênia. O Charm++ possui um tipo espeial
de objeto que possui uma interfae seqüenial, além de uma paralela, que pode ser
utilizadopara programar apliaçõesdata parallel.
Os programas Charm++ espeiam proessos paralelos hamados hares, que
podem riar novos hares e troar mensagens entre eles. No entanto, mensagem é
apenasummodorestritodetroadeinformaçõesesãoofereidastambémonstruçõ-
esomodadosapenas paraleitura,aumuladores, variáveismonotnias(utilizadas
em omputações B&B) e tabelas distribuídas. O Charm++ oferee também um
tipo espeial de hare hamado branh-oe hare (BOC). Uma instânia de um
BOCpossuiumaramiação(branh)emadaproessador. Cadaramopodeenviar
ereeber mensagens assínronas omoum hare, mas pode tambémprover funções
públiasseqüeniais.
OCharm++ ofereetambém uma estrutura, hamadade future, que servepara
armazenarum valorque vai ser alulado no futuro. Umproesso pode riar outro
proesso para omputar um valor que será armazenado em um future. Os demais
proessos podem ontinuar seu proessamento e, quando neessitarem do valor do
future,fazemumaessoaele. Aofazeressahamada,oproessoseguesua exeução
se o valor já estiver alulado e, aso ontrário, a bloqueado até que o álulo
estejapronto. Essa estrutura ésemelhanteaoqueé ofereidopeloCilkeSatinpara
programarapliaçõesD&C.
2.3.2 Meanismos ofereidos para expressar o paralelismo
OCharm++ onsiste basiamente das seguintes ategorias de objetos:
•
Objetos seqüeniais: são objetos C++ omuns;•
Objetos onorrentes: originam-se de proessos do Charm++ e são tambémhamadosdehares. Elespodem riarnovoshares eseomuniarutilizando
objetos repliados,ompartilhadosou de omuniação (mensagens);
•
Objetosrepliados: sãoosBranh-oehares eonsistem de umarépliaemadaproessador de um objetoom um nome globalúnio;
•
Objetos ompartilhados: podem enapsular dados de qualquer tipo, mas pos-suemoperaçõesespeías que podem ser utilizadasnos dados;
•
Objetosdeomuniação: representam entidadesquepodemserenviadasomomensagensentre osobjetosonorrentes.
Essas lasses representam as estruturas existentes para expressar o paralelismo
nomodelo de programação doCharm++.
2.3.3 Meanismo de esalonamento
De aordo om (CHARM++ LANGUAGE MANUAL, 2005), o esalonamento
pode ser feito de forma entralizada ou dinâmia. As estratégias entralizadas são
asseguintes:
•
ReneLB: move objetos dos proessadores mais sobrearregados até atingirumamédia;
•
ReneCommLB:mesmooneito, porém levaemonsideraçãoaomuniaçãoentre osproessos;
•
RandCentLB: atribui objetos para proessadores de formaaleatória;•
ReBisetBfLB: partiionareursivamenteenumerando primeiro emlargura;•
MetisLB: utiliza o Metis (METIS WEBSITE, 2005) para partiionar o grafode omuniação doobjeto;
•
GreedyLB: utiliza um algoritmo gulosos, sempre pegando um objeto maispesadopara oproessador om amenor arga;
•
GreedyCommLB: algoritmogulosoque também levaemonsideração o grafode omuniação;
•
ComboCentLB: éutilizado para ombinar as estratégias aima.As estratégias distribuídas são as seguintes:
•
NeighborLB: ada proessador tenta obter uma arga média em relação aosseus vizinhos;
•
WSLB: Um balaneamentopara agregados de estações de trabalhoque podedetetarmudançanas argasdas máquinaseajustar aarga seminterferir no
trabalhodousuário.
O balaneamento de arga pode ser feito no Charm++ pelo fato de existirem
um grande número de (hares) que podem ser mapeados para os proessadores
disponíveisequeelespodemmigraremtempode exeução,utilizandoasestratégias
2.3.4 Exemplos de ódigo
A denição de mensagens é similar à denição de estruturas em C++, omo
podeservistonagura2.6. UmponteirodemensagempossuiotipoMessageType *
omoemC++epodeserusadoomoumponteironormal. Asmensagensdevemter
dois membrosde função implementados pelousuário para aserialização dos dados.
Esses membros, que são hamados pak (empaotar) e unpak (desempaotar),
se enarregam da onversão do dado para permitir seu envio pela rede e, após o
reebimento,da reueração doseu formato original.
message TipoDaMsg{
// Lista de membros de dados omo em C++
};
Figura2.6: Código Charm++ para denição de uma mensagem
A forma de denição de um objeto onorrente (Chare) enontra-se na gura
2.7. Os pontos de entrada denidos espeiam o ódigo que deve ser exeutado
atomiamentequando uma mensagem éreebida e esalonadapara proessamento.
Elessão denidos taisquaisfunções, porém sem se espeiar tipo de retorno.
hare lass NomeDoChare [: nomes das superlasses℄ {
// Dados e funções de membros privados omo em C++
// Uma ou mais definições de ponto de entrada
entry:
NomeDoPontoDeEntrada(Tip oDaM sg *PonteiroMsg){
//Bloo de ódigo C++
}
Figura2.7: Código Charm++ para denição de um hare
A denição de um branh-oe hare (BOC) é similar a de um hare e pode
ser vista nagura 2.8. O BOC será repliado em todos proessadores que tenham
ramiações suas, eada réplia om seus próprios data members.
branhed hare lass NomeDoChare [:nomes das superlasses℄{
// Dados e funções de membros privados omo em C++
// Uma ou mais definições de ponto de entrada
// Pontos de entrada assim omo hares normais
}
Figura2.8: Código Charm++para denição de um branh-oe hare
No apítulo4, éfeita uma omparação entre os meanismosde omuniação do
Charm++e os meanismosde sinronizaçãoapresentados pelo Cilke Satin.
2.3.5 Apliações implementadas
Em (KALE; KRISHNAN, 1993) são apresentadas exeuções de 3 apliações:
doTSP assimétrio e álulode primosbaseando-se nométodode Eratóstenes. As
exeuções feitas na máquina nCUBE/2, que possui 256 proessadores e memória
distribuída, atingem um speed-up de 130.2 om o Jaobi, 21.8 om o TSP e 145.9
omosprimos. JánasexeuçõesnoSequent Symmetry,quepossui16proessadores
ememóriaompartilhada,atinge-sespeed-ups de12.1omoJaobi,58.8omoTSP
e46.6 om os primos.
Em (KALE et al., 1999) é apresentado o NAMD2, uma apliação de dinâmia
moleularesalávelimplementadautilizandoCharm++,quepodeser exeutadaaté
em milharesde proessadores.
2.4 Ambientes derivados
Estaseçãoapresentaambientesoriginadosdeoutrosjádetalhadosanteriormente.
Algumasde suasaraterístiassão herdadas dosambientes emimadoqualforam
implementados e, por isso, serão feitas desrições breves, destaando as prinipais
diferençase funionalidadesaresentadas.
2.4.1 Cilk-NOW
O Cilk-NOW (BLUMOFE; LISIECKI, 1997) foi desenvolvido para exeutar
programas Cilk em redes de estações de trabalho (NOW) de forma adaptativa
e onável. Esse ambiente utiliza o mesmo modelo de programação do Cilk,
expliado naseção 2.1.1, porém só provê garantias para um subonjunto funional
deprogramasCilk. OCilk-NOWonsistede umambientedeexeuçãoquefuniona
emmodousuárioeofereeomeanismodeesalonamentodoCilk,queutilizaroubo
de tarefas. Além disso, o Cilk-NOW oferee um meanismo que faz a deteção de
estaçõesoiosas eas inlui nalistade proessadores disponíveis.
A linguagem utilizada é semelhante à linguagem do Cilk. A gura 2.9 mostra
oódigo de um programa Cilk-NOW quefaz o álulo de um númerode Fibonai
utilizandodois uxos de exeução (threads).
thread Fib (ont int k, int n){
if (n < 2) send_argument (k,n);
else{
ont int x, y;
spawn_nex Sum(k, ?x, ?y);
spawn Fib(x, n-1);
spawn Fib(x, n-2);
}
}
thread Sum (ont int k, int x, int y){
send_argument(k, x+y);
}
Figura 2.9: Código Cilk-NOW para oálulo don-ésimo número de Fibonai
O prinipal foo do Cilk-NOW é exeutar apliações em ambientes altamente
Essesmeanismosatuamdeformaautomátiaenãopreisamser programadospelo
usuário.
2.4.2 Fauets
O Fauets (KALE et al., 2004) é um sistema que gerenia reursos
omputaionaisompartilhadosomoobjetivodeformarumagradeomputaional.
Eleutilizaum sistemade troas ondeadaAgregadoreebepontosquandoexeuta
umatarefasubmetidaporoutroAgregado,forneendoummodeloquetrataquestões
téniaseeonmiasparaexeuçãodeapliaçõesparalelasemdiferentesAgregados.
O Fauets provê um sistema que suporta exeução de apliações adaptativas,
que devem ser esritas utilizando o Charm++ ou o Adaptive-MPI (enontrado
na seção 3.4.2). Ele suporta também omputação sob demanda, que permite
fazer preempção de tarefas om maior prioridade, e um esalonador que pode ser
utilizadoemonjuntoom o Fauets ouemseparado.
Osambientesapresentadosutilizamomodelodememóriaompartilhadaealguns
ofereemtambémmeanismosparatroademensagens,omoéoasodoCharm++.
Oapítuloaseguirapresentaambientesdeprogramaçãoparalelafoadosnaomuni-
3 DIVISO E CONQUISTA COM TROCA DE
MENSAGENS
Este apítuloapresenta ambientes de programação paralelaque suportam D&C
e utilizam troa de mensagens. O Charm++, apresentado no apítulo anterior, já
possui meanismos para troa de mensagens, porém implementa também outros
meanismosqueforneemabstraçõesquedão aidéiade um ambienteommemória
ompartilhada para o programador. Nos ambientes apresentados a seguir, a sin-
ronização entre os proessos normalmente deve ser expliitada e feita através de
primitivasdetroademensagens. Dessaforma,oprogramadorpodeterumontrole
mais preiso de quando e quais mensagens devemser enviadas e, om isso, pode-se
atingir um desempenho melhor do que os meanismos automátios. No entanto,
esse ontrole exige um onheimento e um esforço maior de programação. Dado o
ontexto, o objetivo de estudar esses ambientes é veriar quais meanismos eles
ofereem para masarar as diuldades de programação e o impato da utilização
naexeução das apliações.
3.1
MAP 3 S
OMPI Advaned Pattern-based Parallel Programming System (
MAP 3 S
) éumaproposta de modelo de programaçãoatravésde padrões. O
MAP 3 S
utilizapadrõesde solução para situações omuns na programação paralela e os utiliza omo base
para gerarframeworks de programação.
Ele é baseado no sistema Corret Objet-Oriented Pattern-based Parallel
Programming System (
CO 2 P 3 S
), que é programado em Java e já foi utilizadopara soluionar alguns problemas paralelos. O objetivo do trabalho é introduzir
o oneito de programação om padrões em uma linguagem amplamente utilizada
emomputaçãode altodesempenho (MPI).
3.1.1 Meanismos ofereidos para expressar o paralelismo
Em (MEHTA; AMARAL; SZAFRON, 2005) são esolhidos alguns padrões dis-
tintosde apliaçõese propostas implementaçõesutilizando seu modelo. O
MAP 3 S
implementapadrõesparamalhas(mesh),ladistribuída,busaemárvore,wavefront
epipeline.
Padrão de malha: pode servir para problemas que envolvem arranjos multi-
dimensionaisde elementos que dependamapenas dos valores de seus vizinhos para
seremalulados.
paralelismo de tarefas que permite fazer o balaneamento de arga dinâmio da
omputação. Esse padrãopode ser utilizadopara programarapliaçõesom tarefas
independentes que serão enleiradas em ada proesso para serem exeutadas. Ao
detetar que sua la de trabalho está vazia o proesso rouba trabalho de outros
proessos.
Padrãode busaemárvore: podeser utilizadoporapliaçõesqueutilizambusa
emestruturadeárvore. Esse padrãodivideotrabalhoentre osproessosesoluiona
oproblema atravésde D&C.
Padrão wavefront: esse padrãofoa problemas que envolvemálulos emestru-
turas de dados bidimensionais om dependênias entre elementos que podem ser
mapeadasutilizandoDAGs. Problemasomessetipodedependênianãopodemser
resolvidosutilizandoopadrãodemalha. Opadrãowavefrontmantémaestruturade
dadosde malha, porém inlui um meanismo para expressar as dependênias entre
oselementosdosvetoreseumpadrãodeomuniaçãoquereeteessasdependênias.
Padrão pipeline: esse padrão tem uma abordagem que envolve programação
funionaleuma relaçãopar-a-par entre proessos. Essa padrão foiadaptado de um
pipeline Mestre/Esravo baseado em estados e onstruído utilizando uma sistema
paraleloom las distribuídas.
3.1.2 Meanismo de esalonamento
O meanismo de esalonamento que o
MAP 3 S
utiliza é baseado em las eroubo de tarefas. Esse meanismo pode ser ajustado pelo programador através
deparâmetros omoprofundidadedadivisão, quedeneaté emqueníveldaárvore
deve ira fasede divisão, meanismo de rouboe tipode la.
3.1.3 Apliações implementadas
Em (MEHTA; AMARAL; SZAFRON, 2005) são apresentadas implementações
e exeuções de duas apliações no
MAP 3 S
: o Jogo de Kee, que utiliza o padrãode busa emárvore, e o Jogo da Vida, que utiliza o padrão de malha. No Jogo de
Keeatinge-seumspeed-upde
3
enoJogodaVida,2.47
quandoexeutadosemumamáquina de 4 proessadores om memória ompartilhada. Em (MEHTA, 2005) é
apresentado omo exemplo para o padrão Wavefront o algoritmo de Alinhamento
de Seqüênia, que proura semelhança entre duas seqüênias de arateres. Para o
padrãopipelineéimplementadooproblemadaoberturademapas: dadodoismapas
de mesmo tamanho ontendo polígonos não sobrepostos, o problema da obertura
pergunta quaispolígonos são geradosquando os dois mapas são sobrepostos.
3.2 MPI 1.2
O MPI é um padrão de programação baseado em troa de mensagens e possui
diferentes implementações, sendo que as implementações mais onheidas são o
LAM-MPI e o MPICH. O MPI é um padrão bastante onheido e utilizado e, por
isso, há interesse em estudá-lo. A norma MPI-1.2 foi proposta em 1997 e apenas
3.2.1 Denição do modelo tratado
O MPI-1.2 provê riação estátia de proessos no iníio da exeução da
apliação e provê primitivas para omuniação entre esses proessos. O modelo
de programação é muito geral e não foa apliações D&C. Nessa norma não
são previstos meanismos de alto nível para sinronização e, portanto, é preiso
espeiartodosospontosdesinronizaçãoentreosproessosatravésdemensagens.
Poresses motivosepelofatodemuitasapliaçõesD&C utilizaremriaçãodinâmia
de proessos, o MPI-1.2, no geral, não é adequado para esse tipo de apliação. O
enfoque prinipal de uso do MPI-1.2 é em arquiteturas om memória distribuída.
No entanto, apliações MPI-1.2 tambémpodem ser exeutadas emambientes om
memóriaompartilhada.
3.2.2 Meanismos ofereidos para expressar o paralelismo
Toda a omuniação é feita basiamente por troa de mensagens, omo envio
e reepção, que podem ser sínronos ou assínronos. O MPI-1.2 também oferee
primitivas para exeutar operações mais omplexas sobre um onjunto distribuído
de dadosatravésde reduções. Alémdisso pode-seutilizartambémbarreiras, omu-
niaçãode grupo, et.
3.2.3 Exemplo de ódigo
Agura3.1apresentaotrehodeumódigoqueexeutaumatroademensagem
do proesso 0 para o proesso 1. Nesse aso, a variável que está sendo enviada na
mensagem é um aratere (har). Após a troa, o proesso reeptor (1)imprime o
onteúdo da mensagem reebida. As açõesapresentadas noódigo são semelhantes
ao que é feito nos métodos pak e unpak desritos anteriormente no Charm++.
Para permitir essa omuniação eautilizaçãodas primitvasMPI éneessário inii-
alizarenalizaro ambienteMPI atravésdas primitivasMPI_Init e MPI_Finalize.
if (rank == 0) {
dest = 1; soure = 1;
r = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag,
MPI_COMM_WORLD);
}else
if (rank == 1) {
dest = 0; soure = 0;
r = MPI_Rev(&inmsg, 1, MPI_CHAR, soure, tag,
MPI_COMM_WORLD, &Stat);
printf("Pro %d: Reebeu % \n", rank, inmsg);
}
Figura 3.1: Código MPI que efetua troa de uma mensagem entre dois proessos
MPI
3.2.4 Apliações implementadas
Entre asdiversasapliaçõesimplementadas,pode-sedestaar High-Performane
benhmarks de máquinas paralelas. O SaLAPACK implementa um subonjunto
das rotinasdoLAPACK (Linear Algebra PACKage)e resolvesistemas de equações
lineares simultâneas, soluções de mínimos quadrados para sistemas lineares, entre
outras. OprojetoBRAMS(Brazilian RegionalAtmospheri Modeling System)éum
projetoqueutilizaMPIparafazerlimatologiaespeíamenteparaostrópios. Os
Benhmarks paralelosNAS,queforamdesenvolvidos pelaNASA, tambémutilizam
MPI.
3.3 MPI-2
O MPI-2 foi espeiado em 1997, junto om o MPI-1.2. No entanto, asimple-
mentaçõesforamsendo feitasaos pouose, apenas reentemente, setornando está-
veis. Foram aresentadas algumasextensões aomodelo omo riaçãodinâmia de
proessos, entrada esaída em paraleloe operações emmemóriaremota.
3.3.1 Meanismos ofereidos para expressar o paralelismo
Um dos prinipais reursos aresentados no MPI-2 é a riação dinâmia de
proessosatravésdaprimitivaMPI_Comm_spawn. NoMPI-2épossívelriarproessos
ao longo da exeução e troar mensagens entre eles. Também é possível troar
mensagens entre apliações iniiadas independentemente, através dos omandos
MPI_Open_port, MPI_Comm_onnet e MPI_Comm_aept. São aresentadas novas
funionalidadesparaentradaesaídadedadosde formaoletiva,atravésdos oman-
dosomoMPI_PuteMPI_Get. Tambémsão dadasfunionalidadesparainteraçãode
programasMPI om múltiplos uxos de exeução (threads), oque não é suportado
noMPI-1.2.
3.3.2 Meanismos de esalonamento
Obalaneamentode arga noMPI-2normalmentea aargo doprogramador.
O LAM-MPI oferee um meanismo de esalonamento Round Robin apenas entre
proessosde mesmonível,que não é adequadopara riação reursivade proessos.
3.3.3 Exemplos de ódigo
A gura 3.2 apresenta um treho de ódigo MPI-2 que pode ser usado para
implementar uma hamada reursiva. A primitiva MPI_Comm_spawn reebe omo
argumento o nome do programa que será exeutado e os argumentos que serão
passado para ele e o programa poderá utilizar esses argumentos assim omo uma
apliaçãoConvenional.
Agura3.3apresentaum trehodoódigoquefazoálulodon-ésimo número
de Fibonai de forma reursiva. Caso o
n
pedido seja menor que2
, ele retornao próprio
n
através de uma mensagem de envio. Caso ontrário, o proesso ria2
novos proessos para alularn − 1
en − 2
, aguarda os proessos retornarem oresultado através de dois reebimentos bloqueantes e, então, soma os resultados
pariaiseretornao valoratravésde umamensagem de envio. Como pode ser visto
notrehodeódigo,asinronizaçãoentreosproessoséexpliitadaatravésde troa
argv+=1;
profundidade = atoi(argv[0℄);
if (profundidade > 0 ){
printf("<%d> riando novo proesso, prof = %d\n",
meurank, profundidade);
sprintf(argv[0℄,"%d",--d epth );
MPI_Comm_spawn(ommand, argv , 1, loal_info, meurank,
MPI_COMM_SELF, &hildren_omm, errodes);
}
Figura3.2: Código MPI-2 quemostra a riaçãoreursiva de proessos
3.4 Ambientes derivados
Assim omo a seção 2.4, esta seção apresenta ambientes originados de outros
já detalhados anteriormente. Os ambientes abaixo, apesar de serem derivados dos
desritos noapítulo 2,são foados emtroa de mensagens.
3.4.1 Jade
O ambiente Jade (DESOUZA; KALE, 2003) é derivado do Charm++ e
apresenta-seomo uma linguagem estiloJavaom meanismos paralelosorientados
a mensagem. Os meanismos paralelos inluem os hares e vetores de objetos
paralelos,hamados ChareArrays. Omodelode omuniaçãoutilizadoéassínrono,
istoé, quando um objeto exeuta uma primitiva de omuniação, ele ontinua sua
exeução sem esperar oretorno dométodo. A semântia doJava émantida e,para
obterdesempenho,essa linguagem étraduzidapara alinguagemdoCharm++ que,
então, éompilada e exeutada na máquinaalvo.
O prinipal objetivo do Jade é ofereer uma linguagem de programação mais
simplesqueadoCharm++sempreisarpagaroaltoustodaexeuçãointerpretada,
omo o Java. Os benefíios dessa abordagem inluem: failitar a análise do om-
pilador, já que não existe aritmétia de ponteiros; aumento da produtividade de
programaçãopelautilizaçãode oleta de lixoautomátia,empaotamentoe desem-
paotamentodos dados funçõesque preisavamser programadaspelousuáriono
Charm++ são feitos de formaautomátia noJade.
3.4.2 Adaptive-MPI
ApliaçõesomplexasejádesenvolvidasemMPIpossuemumustomuitogrande
de onversão para ambientes orientados a objetos e om balaneamento de arga
dinâmio. O ambiente Adaptive-MPI (AMPI) (HUANG; LAWLOR; KALE,2003)
foi desenvolvido para aresentar meanismos de balaneamento de arga em apli-
ações MPI existentes, utilizandoo meanismode balaneamentodoCharm++. O
AMPI implementa proessos MPI omo uxos em nível de usuário, para diminuir
osustos de troade ontexto ede migração,e osesalonautilizandoo Charm++.
Para utilizar o AMPI é ofereido um esquema de onversão. Esse meanismo é
adaptado apenas para alguns tipos de apliações que possuem uma arga bastante
diferenteemada nó, omo éoaso das apliaçõesqueutilizamténias de Rena-
argv+=1;
n = atol(argv[0℄);
if (n < 2 ){
printf("<%ld> devolvendo n\n",n);
MPI_Send(&n,1,MPI_LONG, 0, 0, parent);
}else{
printf("<%ld> riando novos proessos\n",n);
sprintf(argv[0℄,"%ld",(n-1) );
MPI_Comm_spawn(ommand, argv , 1, loal_info, myrank,
MPI_COMM_SELF, &hildren_omm[0℄, errodes);
sprintf(argv[0℄,"%ld",(n-2) );
MPI_Comm_spawn(ommand, argv , 1, loal_info, myrank,
MPI_COMM_SELF, &hildren_omm[1℄, errodes);
MPI_Rev(&x, 1, MPI_LONG, MPI_ANY_SOURCE, MPI_ANY_TAG,
hildren_omm[0℄,MPI_STATU S_IG NORE );
MPI_Rev(&y, 1, MPI_LONG, MPI_ANY_SOURCE, MPI_ANY_TAG,
hildren_omm[1℄,MPI_STATU S_IG NORE );
n=x+y;
MPI_Send(&n,1,MPI_LONG, 0, 0, parent);
}
Figura3.3: CódigoMPI-2reursivoparaoálulodon-ésimo númerode Fibonai
modeloespeíode apliações,oAMPInão pareeser adaptadoparaprogramação
4 COMPARAÇO ENTRE OS AMBIENTES
Esteapítuloapresentaalgumasdasaraterístiasdosambientesanalisadosom
o objetivo de identiar e omparar os meanismos de programação de apliações
D&C ofereidos. Serão omparados os meanismos de riação de tarefas, sinroni-
zaçãoe esalonamento.
4.1 Meanismos para riação de tarefas
Esta seção apresenta os meanismos ofereidos em ada ambiente para riação
dinâmia de tarefas. São omparados os meanismos do Cilk, Satin, MPI-2 e
Charm++. O MPI-1.2 não onsta nesta seção pois não oferee riação dinâmia
de proessos, apenas estátia.
O primeiro meanismo estudado foi o modiador spawn, proposto no Cilk e
também utilizado no Satin. Esse modiador pode ser oloado em métodos ou
funções que tenham potenial para serem exeutadas em paralelo. Ao fazer uma
hamadadeumafunção spawn,oprogramaseguesua exeuçãosemarbloqueado
aespera doresultado dafunção. Para utilizaros dados alulados por uma função
desse tipoé neessário utilizaralgum meanismo de sinronização.
NoCharm++astarefassãorepresentadaspeloshares quesãoobjetosparalelos
erepresentamunidadesloaisde trabalho. Cadahare possuidadosloais,métodos
para tratamento de mensagens e possibilidade de riar novos hares, assim omo
proessos MPI-2. Existe ainda um tipo espeial de hare, hamado branh-oe,
quepossui uma ramiação emada proessador eum únionome global. Branh-
oe hares ofereem métodos seqüeniais que podem ser aessados porhares de
formatransparente emqualquer proessador.
No MPI-2 a riação de tarefas pode ser feita através da primitiva
MPI_Comm_spawn. Essa primitivaria um novo proesso MPI a partir da hamada
deum arquivoexeutável, passando parâmetrostalqualumahamadapor linhade
omando. O arquivo exeutável pode ser o mesmo do proesso que faz a hamada,
podendo, assim, seremfeitas hamadasreursivas.
Os meanismos de sinronização estudados mais adaptados para programação
D&C são: (a)spawn(CilkeSatin),(b) futures(Charm++)e()MPI_Comm_spawn
(MPI). Vale destaar que o meanismo (a) existe em ambientes espeíos para
4.2 Meanismos de sinronização
Esta seção apresenta os meanismos que podem ser utilizados para sinronizar
astarefas riadas emada ambiente.
Parasinronizarastarefasriadasomspawndeve-seutilizarosyn,quegarante
que o proesso pode utilizar om segurança os dados alulados pelos lhos. Ao
fazer uma hamada syn, o proesso veria se as tarefas riadas já terminaram
sua exeução e,aso já tenhamterminado,eleontinuasua exeução normalmente.
Caso ontrário, o proesso a bloqueado até o términodos proessos lhos.
No Charm++ a sinronização pode ser feita através de Futures, objetos de
omuniação, repliados ou ompartilhados. O future é uma estrutura que serve
para armazenar um valor que será alulado no futuro por outro hare. O aesso
a essa estrutura é bloqueante e pode ser omparado a um aesso ao resultado de
um método spawned preedido de uma hamada syn. A utilização de objetos de
omuniaçãopermitequeumhare seomuniqueportroademensagens,tornando
a omuniação semelhante a realizada om MPI. Os demais objetos introduzem
oneitos para omuniação não enontrados nos outros ambientes estudados.
No MPI-2 a sinronização deve ser feita através de troa de mensagens. Para
veriar seo resultado já está prontosem bloquear a exeuçãodo proesso pode-se
utilizartroa de mensagem assínrona. Desse modo, o paifaz um reebimento não
bloqueante e quando preisar dos dados alulados pelos lhos, faz uma hamada
de espera de mensagem (MPI_Wait). Outro meanismo queo MPI-2 oferee é para
testarse uma mensagem já foienviada, quepode ser utilizadopara saberse olho
já terminou sua tarefa e não ar bloqueado esperandoo término.
NostrêsambientesestudadosépossívelprogramarapliaçõesD&C,porémainda
éneessário estudareadaptarosmodelosdoCharm++edoMPIpara restringirem
aomodelo D&C.
4.3 Meanismos de esalonamento
OCilkoferee um esalonador queutilizao algoritmode roubo de tarefas. Esse
algoritmoésimplesefáildeser implementado,porém sóéadequadopara sistemas
om onexões de rede homogêneas oumemória ompartilhada.
O Satin implementa diversos algoritmos de esalonamento (seção 2.2.2 no
apítulo2) e osque se mostram mais eientes para máquinas interonetadas por
redes WAN são: Roubo Aleatório de Tarefas para Agregados e Roubo Adaptativo
Aleatório de Tarefas para Agregados. O primeiro algoritmo destaa-se pela sua
simpliidadeeporobterumaeiêniabempróximadosegundo,queéumalgoritmo
mais omplexoe om mais variáveis.
O Charm++ oferee diversos métodos de esalonamento (seção 2.3.3) porém
não foramenontrados na bibliograa detalhes de sua utilizaçãoemmáquinas om
memóriadistribuída.
O MPI, seja na versão 1.2 ou na 2, não prevê meanismos de esalonamento
em suaespeiação. A neessidadedoprogramadorimplementarobalaneamento
de arga da sua apliação diulta muito a implementação de diversos tipos de
apliações, inlusiveD&C.
Uma possibilidade viável que aparee om esse estudo é a utilização de algum