• Nenhum resultado encontrado

ÍÆÁÎ ÊËÁ Ê Ä Ç ÊÁÇ Ê Æ Ç ËÍÄ ÁÆËÌÁÌÍÌÇ ÁÆ ÇÊÅýÌÁ ÈÊÇ Ê Å È Ë¹ Ê Í Ç Å ÇÅÈÍÌ Ç ÍÁÄÀ ÊÅ È Ê ÌÌÁ È Á Ñ ÒØ ÈÖÓ Ö Ñ Ó È Ö Ð Ð ÕÙ ËÙÔÓÖØ Ñ Ú Ó¹ ¹ ÓÒÕÙ Ø ÌÖ

N/A
N/A
Protected

Academic year: 2022

Share "ÍÆÁÎ ÊËÁ Ê Ä Ç ÊÁÇ Ê Æ Ç ËÍÄ ÁÆËÌÁÌÍÌÇ ÁÆ ÇÊÅýÌÁ ÈÊÇ Ê Å È Ë¹ Ê Í Ç Å ÇÅÈÍÌ Ç ÍÁÄÀ ÊÅ È Ê ÌÌÁ È Á Ñ ÒØ ÈÖÓ Ö Ñ Ó È Ö Ð Ð ÕÙ ËÙÔÓÖØ Ñ Ú Ó¹ ¹ ÓÒÕÙ Ø ÌÖ"

Copied!
47
0
0

Texto

(1)

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

(2)
(3)

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

(4)

3.1

MAP 3 S

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

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

(5)

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

(6)
(7)

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:

(8)
(9)

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-

(10)
(11)

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-

(12)
(13)

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

(14)

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(parte

2

(

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

e

P 2

),passando

partedoproblemaparaadaproesso. Nopasso3,

P 1

e

P 2

veriamqueoproblema

reebido é simples (no aso, um vetor unitário), exeutam a operação

sobre os

dados e retornam os resultados pariais para

P 0

que, então, ombina os resultados

pariaispara 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

(15)

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 por

P 1

e

P 2

. Vale

ressaltarqueosvé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 um

vetorquepodeserfailmentedivididoentreosproessadoresdisponí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 dos

(16)

feitaspor todos os proessos;

ordenamento de números - utilizando o algoritmo Buket Sort: divide-se o

vetor 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, ada

proesso 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 novo

proesso (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 aminhos

einiia-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ívelaproveitarreursosquesealteram

dinamiamenteom o tempo;

possibilidade de alterar a granularidade da tarefa exeutada pelos proessos

atravé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 de

paralelismoda apliação;

possibilita implementação de apliações paralelas om dependênias entre as

tarefas.

(17)

amodelagemeimplementaçãodasinronizaçãoentreastarefaspodesetornar

um trabalhoárduo;

pode neessitarajustedeparâmetros,omoprofundidadedareursão,para se

adequarao 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

(18)

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ém

ainda 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

(19)

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

//

ilk2

b.

//

g b.o

//

ld

b

//

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

(20)

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

(21)

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áriopara

a 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

(22)

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 ilk2

(23)

feitasexeuçõ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

(24)

(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

(25)

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;

(26)

Objetos onorrentes: originam-se de proessos do Charm++ e são também

hamadosdehares. Elespodem riarnovoshares eseomuniarutilizando

objetos repliados,ompartilhadosou de omuniação (mensagens);

Objetosrepliados: sãoosBranh-oehares eonsistem de umarépliaem

adaproessador 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 entidadesquepodemserenviadasomo

mensagensentre 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é atingir

umamédia;

ReneCommLB:mesmooneito, porém levaemonsideraçãoaomuniação

entre osproessos;

RandCentLB: atribui objetos para proessadores de formaaleatória;

ReBisetBfLB: partiionareursivamenteenumerando primeiro emlargura;

MetisLB: utiliza o Metis (METIS WEBSITE, 2005) para partiionar o grafo

de omuniação doobjeto;

GreedyLB: utiliza um algoritmo gulosos, sempre pegando um objeto mais

pesadopara oproessador om amenor arga;

GreedyCommLB: algoritmogulosoque também levaemonsideração o grafo

de 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 aos

seus vizinhos;

WSLB: Um balaneamentopara agregados de estações de trabalhoque pode

detetarmudanç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

(27)

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:

(28)

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

(29)

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-

(30)
(31)

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

) éuma

proposta de modelo de programaçãoatravésde padrões. O

MAP 3 S

utilizapadrões

de 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 foi utilizado

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

(32)

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 e

roubo 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ão

de 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

quandoexeutadosemuma

má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

(33)

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

(34)

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 que

2

, ele retorna

o próprio

n

através de uma mensagem de envio. Caso ontrário, o proesso ria

2

novos proessos para alular

n − 1

e

n − 2

, aguarda os proessos retornarem o

resultado 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

(35)

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-

(36)

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

(37)

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

(38)

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

Referências

Documentos relacionados

É em torno desse contexto que o livro “Religião e Política: medos sociais, extremismo religioso e as eleições 2014” se organiza, buscando compreender as composições que se

Jas mislam deka familijata koja mo`e sekoga{ da se smee mora da e sre}na i, da go citiram Osnova~ot Nikjo Nivano, kako {to e objaveno vo izdanieto za Juni 2016 na mese~noto

[r]

fases, o omportamento iniial da função de Wigner ρ W se aproxima do omportamento iniial da distribuição lássia ρ à medida que N aumenta e que aparentemente é possível obter

Quando esta opção está desativada, o SmartControl Lite não inicializa ou aparece barra de tarefa.. A única forma de iniciar o SmartControl Lite é a partir do atalho existente

uma instânia (E; S; ) do problema MinCC para a qual o algoritmo. devolve uma obertura de usto não inferior a opt (E;

As variáveis estudadas foram idade e raça da mulher (branca e não branca); escolaridade (&lt;8 anos e &gt;8 anos de estudo formal); renda familiar &lt;2 salários mínimos (SM), de 2 a

Graduado em Ciências Contábeis pela Universidade São Judas Tadeu, Especialista em Auditoria Contábil pela Universidade Mackenzie, Especialista em Direito Previ- denciário pela EPD