Você está na página 1de 33

CENTRO UNIVERSITARIO DA GRANDE DOURADOS

Higor de Nara Rigon RGM: 122.737

Computaao de Circuitos de Euler em Grafos c nos Modelos Sequencial e Paralelo.

Dourados 2010

CENTRO UNIVERSITARIO DA GRANDE DOURADOS

Higor de Nara Rigon RGM: 122.737

Computaao de Circuitos de Euler em Grafos c nos Modelos Sequencial e Paralelo

Plano de Trabalho da disciplina de Projeto em Computaao I apresentado ao Curso de c Cincias da Computaao da Faculdade de e c Cincias Exatas do Centro Universitrio da e a Grande Dourados, como pr-requisito para e obtenao do t c tulo de Bacharel em Cincia e da Computaao. c

Orientador: Profo . Marcos Alves Mariano.

Dourados 2010

Resumo
O presente trabalho tem como proposta criar um estudo sobre computaao parac lela,com a nalidade de adquirir conhecimentos para aplicados na computao de circuitos ca de Euler em grafos. utilizando algoritmos paralelos e sequenciais, visando realizar testes comparativos dos desempenhos de ambos os algoritmos. possibilitando comprovar em resultados prticos os resultados tericos esperados. a o

Lista de Figuras
2.1 2.2 3.1 3.2 Modelo BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Modelo CGM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Grafo Euleriano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Lista de siglas
RAM PRAM BSP CGM SPMD Random Access Machine Parallel Random Access Machine Bulk Synchronous Parallel Coarse Grained Multicomputer Single Program, Multiple Data

Sumrio a

1 Introduo ca 1.1 1.2 1.3 1.4 1.5 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Justicativa/Motivaao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Organizao do Texto ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6 7 7 7 8 9 10

2 Modelos computacionais e mtodos de troca de mensagens e 2.1

Computao paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 ca 2.1.1 2.1.2 2.1.3 Denio de n ca veis de paralelismo . . . . . . . . . . . . . . . . . . . 11 Desempenho na Computaao Paralela . . . . . . . . . . . . . . . . . 11 c Modos de acesso a memria . . . . . . . . . . . . . . . . . . . . . . 11 o

2.2

Modelos de Cmputao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 ca 2.2.1 2.2.2 2.2.3 Modelo sequencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Modelo de memria compartilhada . . . . . . . . . . . . . . . . . . 13 o Modelos real sticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Modelo BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Modelo CGM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3

Ambientes de Troca de Mensagens

. . . . . . . . . . . . . . . . . . . . . . 17

Criaao e Execuo de Processos . . . . . . . . . . . . . . . . . . . 18 c ca Comunicao Ponto-a-Ponto ca Comunicao coletiva ca . . . . . . . . . . . . . . . . . . . . . 18

. . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Grafos e Algoritmos para Computar Circuitos de Euler 3.1

20

Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1.1 3.1.2 Circuitos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Aplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 ca

3.2 3.3

Algoritmo seqencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 u Algoritmos Paralelos no Modelo PRAM . . . . . . . . . . . . . . . . . . . . 25 3.3.1 3.3.2 Algoritmo Paralelo de Atallah-Vishkin . . . . . . . . . . . . . . . . 25 Algoritmo de Cceres et al . . . . . . . . . . . . . . . . . . . . . . . 26 a

3.4

O Algoritmo BSP/CGM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 31

Referncias Bibliogrcas e a

Introduo ca

A computaao evolui constantemente, visando se aprimorar e adaptar as necessic dades que vo surgindo com o passar dos tempos. Durante essa evoluao desde a inverso a c a do computador, a capacidade de processamento tem aumentado consideravelmente, junto com ela ocorre o aumento da quantidade de informaoes que necessitam serem processac das. A computaao paralela vem permitindo que problemas complexos sejam solucic onados e aplicaes de alto desempenho sejam desenvolvidas. O processamento paralelo co pode ser denido com o uso de mltiplos processadores para executar diferentes partes u do mesmo programa simultaneamente. A computao paralela a alternativa para se ca e maximizar a capacidade de computaao. c Entre as muitas areas para aplicaao da computao paralela, uma delas na c ca e area de grafos, um problema clssico computao de circuitos de Euler em grafos. Esse a e ca um problema que necessita de grande capacidade de processamento. Entre as solues e co para esse problema temos algoritmo sequencial e algoritmos paralelos. Os algoritmos paralelos so desenvolvidos no modelo computacional real a stico, que permite que os algoritmos paralelos sejam analisados levando em conta a comunicaao c necessria entre os processadores. A comunicao entre os processadores o fator que a ca e determina o desempenho dos algoritmos paralelos. O algoritmo paralelo BSP/CGM e o unico que apresenta granularidade grossa suciente para computao de circuitos de ca Euler em grafos, com resultados satisfatrios. O algoritmo BSP/CGM apresenta um o desempenho superior ao algoritmo sequencial que o objetivo de um algoritmo paralelo. e

1.1

Objetivos
Os objetivos do trabalho desenvolvido estudar os princ e pios e mtodos utilizados e

na computaao paralela, visando aplic-los no estudo de grafos, utilizando como problema, c a a computaao de circuitos de Euler. O estudo mostrara os principais algoritmos, tcnicas c e e conceito utilizados para realizar a computaao de circuitos de Euler em grafos, utilizando c os conceito de computao sequencial e computaao paralela. Assim podem demonstrar ca c o desempenho das teorias existentes na pratica analisando e comprovando-os com os resultados obtidos.

1.2

Justicativa/Motivao ca
Desde sua criao, a computaao paralela vem se tornando uma area que cresce ca c

verticalmente, devido ao desenvolvimento tecnolgico global, hoje em muitos segmentos o existe a necessidade do processamento de grandes quantidades de dados, principalmente nas areas comerciais. A computaao paralela a alternativa encontrada para se aumen c e tar a capacidade de processamento em um menor tempo, proporcionando solues mais co rpidas para os problemas encontrados na area de informtica. a a

1.3

Metodologia
A metodologia de pesquisa ser baseada na busca de informaao em diferentes a c

meios, procurando obter o maximo e melhor informaao poss c vel, como em livros na area em estudo, artigos cient cos que demonstrem ferramentas e informaoes que possam ser c utilizadas, paginas web que apresentem contedo de qualidade, e junto aos professores prou curando obter conhecimento sobre informaoes que sejam necessrias. A implementao c a ca ser realizada utilizando o conceito de computaao paralela, sendo realizados uma serie de a c testes que sero implementados nos laboratrios de computaao da Unigran, com objetivo a o c de demonstrar o desempenho e funcionalidade nos diferentes grafos que sero utilizados a durante o teste de desempenho dos algoritmos no modelo paralelo e no modelo seqencial. u

1.4

Cronograma

1.5

Organizao do Texto ca
O trabalho est organizado da seguinte maneira. Os cap a tulos so: Capitulo a

1: Introduao. Este capitulo tem a funao de trazer uma introduao aos conceitos da c c c computaao paralela, demonstrando o problema em grafos que ser estudado. c a Capitulo 2: Modelos computacionais e mtodos de troca de mensagens. Este e capitulo apresenta os principais conceitos sobre a computao paralela, e as principais ca tcnicas que ela utiliza. e Capitulo 3: Grafos e Algoritmos para Computar Circuitos de Euler. Este capitulo apresenta os conceitos necessrios em teoria dos grafos para entender problema de circuitos a de Euler e algumas de suas aplicaes. E descrevemos os algoritmos encontrados na co literatura para computao de circuitos de Euler em grafos. ca

10

Modelos computacionais e mtodos de troca de mensagens e

2.1

Computao paralela ca
A computaao paralela surgiu da necessidade de se aumentar a capacidade de c

processamento dos dados. Como se sabe, os computadores baseados no modo seqencial u de processamento tm alcanado o limite de seu rendimento, dando assim impulso para a e c computaao paralela que surgiu na dcada de 80. Os estudos da computaao paralela tm c e c e o objetivo de trabalhar com grandes quantidades de dados de maneira que sejam computados da maneira mais rpida e eciente. Hoje existe a necessidade do desenvolvimento a da computao paralela, pois em amplas as reas existem a necessidade da computaao ca a c de grandes quantidades de dados, como na rea de previso do tempo que utilizam grades a a quantidades de informaes. A computao paralela tem o objetivo de subdividir um co ca problema em partes, de modo que se possam dividir as informaes a serem processadas co entre vrios processadores. a A computaao paralela necessita que se faa um estudo detalhado dos problemas c c que sero tratados, pois quando um algoritmo e projetado para um determinado problema, a necessrio que se faa uma avaliaao da composiao do problema, pois alguns problemas e a c c c com soluoes em algoritmos seqenciais no podem ser utilizadas em algoritmos paralelos, c u a pois a problemas que so paralelizveis e alguns que apresentam um n de paralelizaao a a vel c muito dif cil. Os algoritmos paralelos alem de serem mais complexos de projetar e analisar, existe o problema que se refere ` arquitetura alvo para qual sero projetados, os algoritmos a a paralelos tem uma grande quantidade de ferramentas que podem ser utilizadas, e essas devem ser utilizadas da maneira mais eciente poss para maximizar o desempenho da vel computaao paralela. c

11

2.1.1

Denio de n ca veis de paralelismo


O n de paralelismo formado pelo tamanho mdio em que as tarefas de um vel e e

problema so divididas, os algoritmos no necessitam apresentar um tamanho grande a a para as sub-rotinas em que o problema derivado, mas tm-se como modelos que quanto e e maiores forem `s derivaoes dos problemas melhores elas sero, pois ira minimizar a a c a comunicao necessria entre os processadores dando assim um melhor desempenho para ca a o processamento. Na deniao de Wilkinson e Allen(ALLEN., 1999) para essa subdiviso do proc a blema denida como sendo de Granularidade grossa, na e mdia: Na granularidade e e grossa, cada processo contm um grande nmero de instruoes seqenciais e gasta um e u c u tempo considervel para execut-las. Na granularidade na, o processo consiste de poua a cas instruoes, ou at mesmo uma unica instruao. A granularidade mdia representa c e c e um grupo intermedirio. Geralmente, desejamos aumentar a granularidade para reduzir a os custos da comunicaao entre os processos, principalmente em ambientes de troca de c mensagens, mas devemos tomar cuidado com o aumento da granularidade, pois ela reduz o nmero de processos concorrentes e o n de paralelismo. u vel Sendo assim um algoritmo de granularidade grossa se mostra mais eciente.

2.1.2

Desempenho na Computao Paralela ca


Quando aplicamos o paralelismo a um problema o objetivo maximizar a capae

cidade de processamento, e aumentar a velocidade com que se realiza a soluo de um ca problema. Para se analisar quanto foi o ganho que se obteve, utiliza-se a tcnica do spee edup e a da ecincia para obter o quanto de ganho teve. O Speeup tem o conceito de e analisar o quanto foi o ganho no processamento de um algoritmo paralelo, em ralaao c a um algoritmo seqencial. No caso em que quanto maior o nmero de processadores u u maior tambm o aumento de desempenho. A ecincia e a anlise da utilizaao dos e e a c processadores durante a execuo dos algoritmos. A ecincia afetada principalmente ca e e pela quantidade de comunicao necessria entre os processadores, e pelo tempo gasto na ca a sincronizaao dos processadores. c

12

2.1.3

Modos de acesso a memria o


Durante o processo de computao paralela existe um fator que inuncia e tm ca e e

um papel crucial no desempenho, esse fator a maneira como ser feita a comunicaao e a c entre os processadores durante o processamento dos dados. Esse fator o modo de acesso e a memria que utilizado na arquitetura alvo. Durante a computaao ocorrem fatores o e c como a transferncia dos dados e informaes entre os processadores e a sincronizaao e co c e controle das aoes que iro ocorrer concorrentemente entre os processos. O acesso a c a memria pode ser Memria compartilhada ou memria distribu o o o da. Arquiteturas com Memria Compartilhada. Nesse modelo a memria principal o o compartilhada entre mltiplos processadores que funcionam independentemente um do e u outro. Nesse modelo existe a vantagem que a troca de informaoes entre os processadores c igual ao tempo de busca na memria, e permite uma maior simplicidade em sua ime o plementao. Porm os acessos a memria cam limitados, pois apenas um processador ca e o pode ter acesso a memria e a memria torna-se um gargalo que requer cuidado durante ` o o a implementao, quanto maior for a necessidade de consulta as memria haver perca ca o a de desempenho. Arquiteturas com Memria Distribu o da. Nesse modelo cada processador tem sua apropria memria principal, dessa maneira todos os processadores podem acessar sua o memria em qualquer momento, assim a memria aumenta proporcionalmente com o o o aumento do numero de processadores. A troca de mensagens que faz o transporte dos dados e a sincronizao dos processos. Esse modelo requer maior controlo do programador ca sobre o funcionamento do programa.

2.2

Modelos de Cmputao ca
O modelo computacional deve ser observado de dois aspectos, o primeiro e de

como um algoritmo pode ser projetado, contando com os recursos e tcnicas que podem e ser utilizados. O outro aspecto matemtico onde seja poss calcular custos para os e a vel algoritmos e gasto adicionais como tempo para computao e quantidade de dados a serem ca armazenados, e assim realizar uma anlise da sua complexidade. Em algoritmos paralelos a deve adicionar custos como quantidade de processadores e tempo gastos na comunicao. ca De acordo com Browne(GOTTLIEB, 1994), os cinco atributos seguintes devem ser Especicados em um modelo computacional que inclui o paralelismo.

13

As unidades primitivas de computaao (tipos de dados e operaoes denidas pelo c c conjunto de instruoes); c O mecanismo de controle que seleciona as unidades primitivas em que o problema foi particionado para serem executadas; O mecanismo de dados que dene como os dados so acessados na memria; a o As regras que regem a comunicao entre os processadores que trabalham em paraca lelo, para que eles possam trocar as informaes necessrias; co a Mecanismos de sincronizaao, para assegurar que estas informaes alcancem o desc co tino em tempo nito.

2.2.1

Modelo sequencial
O modelo sequencial baseado no modelo de computaao de John Von Neumann. e c

Esse modelo basicamente formado por uma unidade de processamento dos dados e por e uma memria principal. Nesse modelo os programas so armazenados na memria prino a o cipal, e atravs de dispositivos de gerenciamento em que as instruoes so transportadas e c a da memria principal para o processador. o A memria principal recebe o programa, que alocado de maneira que as inso e truoes so armazenadas seqencialmente, conforme o processamento de uma instruao c a u c efetuado, a prxima instruo que est residindo na memria local alocada a UCP e o ca a o e que processa a instruao, e assim seqencialmente as instruoes so realizadas. O modelo c u c a sequencial traz algumas diculdades para a evoluo da computaao pois mesmo com uma ca c grande capacidade de processamento da UCP, o processamento ca limitado devido ao fato de que todas as instruoes esto na mesma memria e assim apenas uma instruao c a o c realizada por vez, quando uma instruo nalizada o processador busca a prxima e ca e o instruao na memria, esse trafego de instruoes limita a velocidade do processamento c o c pois a memria torna-se um gargalo. o O modelo RAM (Random Access Machine) um modelo terico que baseado e o e nos conceitos criados por Von Neumann. Esse modelo sequencial possibilita a produao de c algoritmos sequenciais, onde se pode realizar o estudo da complexidade de sua execuao. c No modelo de computao sequencial temos um modelo unico que utilizado. Na comca e putaao paralela no existe um modelo unico. Assim cada modelo paralelo possui uma c a

14

anlise distinta do funcionamento e complexidade dos seus algoritmos, onde cada algoa ritmo deve ser analisando apenas no modelo ao qual foi criado.

2.2.2

Modelo de memria compartilhada o


Esse modelo se caracteriza por ter vrios processadores, onde cada processador a

tem sua prpria memria principal, esses computadores se comunicam utilizando uma o o memorial global. Na memria global os processadores podem efetuar a comunicaao o c entre si atravs de escritas e leituras na memria global. e o O modelo PRAM (Parallel Random Access Machine) um modelo de memria e o compartilhada, nesse modelo todos os processadores podem processar instrues ao mesmo co tempo, podem assim maximizar a capacidade de processamento dando uma resposta mais rpida para o problema. a O processamento no modelo PRAM apresenta uma complexidade sobre a comunicao entre os processadores, na memria global onde os processadores realizam ca o operaoes de leitura e escrita, necessita de um controle sobre a sincronizaao dos procesc c sadores que esto realizando os processos de escrita e leitura para evitar que no haja a a a inconsistncia dos dados, ou que processadores alterem dados que esto sendo lidos. e a Os algoritmos desenvolvidos para esse modelo devem ser projetados de maneira a aproveitar ao mximo paralelismo de um problema. a Modelo de memria distribu o da O modelo de memria distribu ou comumente chamado de Modelo de Rede, e o da composto por vrios processadores, onde cada processador tem sua prpria memria local a o o a diferena que existe entre o modelo de memria compartilhada de que no existe uma c o e a memria global para se efetuar a comunicao entre os processadores. No modelo de rede o ca a comunicaao entre os processadores realizadas por meio da troca de mensagens. c e A troca de mensagens realizada atravs de uma rede que interliga os processae e dores, permitindo a comunicao e transferncia dos dados entre os processadores, essa ca e troca denominada roteamento. e A topologia utilizada para efetuar a comunicaao entre os processadores tem sua c ecincia denida pelo grau e dimetro. e a Grau mximo: Corresponde ao nmero de processadores que podem estar ligados a u

15

a um processador. Dimetro: Corresponde a distncia mxima que pode existir entre dois processaa a a dores. No modelo de rede a computao geralmente realizada por um nmero determinado de ca e u computadores, que so conectados por alguma topologia de rede, A anlise dos algoritmos a a realizada em funo do tempo de computaao em que feita uma anlise local e uma e ca c e a global, como tambm, realizada uma anlise do tempo gasto na comunicaao que e e a c e medida pelas quantidades de mensagens e o tamanho mdio das mensagens. e

2.2.3

Modelos real sticos


Os modelos real sticos surgiram da necessidade de se criar um modelo que agre-

gasse todos os aspectos que inuenciam na produao de um algoritmos paralelos, para c que se possa ter realmente uma noo real, do custo dos algoritmos na teoria que seja ca relativos aos resultados obtidos na prtica. a O modelo real stico tenta demonstrar com clareza e conabilidade a diculdade de se paralelizar, garantindo que sejam obtidos os melhores resultados em algum problema proposto. Algoritmos como no modelo de rede e no modelo de memria distribu no o da a transmitem com preciso e clareza o custo dos algoritmos. a 2.2.3.1 Modelo BSP O modelo BSP (Bulk Synchronous Parallel ), um dos principais modelos real e sticos. Esse modelo foi um dos primeiros a considerar os custos de comunicao como caracca ter stica de um modelo de computaao paralela. c O modelo BSP constitu por um numero P de processadores com memrias e do o prprias de cada um, onde esto ligados por alguma interconexo, os processadores so o a a a gerenciados por um roteador, que pode enviar mensagem ponto- a- ponto entre os processadores, e tambm permite a sincronizaao dos processadores por unidade de tempo. e c O modelo BSP baseado em uma seqncia de super-passos, onde cada supere ue passo pode realizar dois tipos de tarefas: executar uma combinaao de computaoes locais. c c transmisso de mensagens ou recebimento de mensagens de outros processadores. a

16

BSP.JPG Figura 2.1: Modelo BSP Assim podemos denir os super- passos em super- passos de computaao e superc passos de comunicao. Aps um super-passo de T unidades de tempo um sincronizador ca o analisa se o super-passos foi completado por todos processadores, caso tenha sido ele prossegue para o prximo super passo, caso contrrios e realiza mais um super-passo o a com T unidade de tempo para que ele seja completado, dando assim prosseguimento ao prximos super-passos. o Um algoritmos com I super-passo apresenta os seguintes custos: Custo de Computaao: O custo de computaao dado pelo somatrio do conjunto de instruoes bsicas c c e o c a realizadas pelos P processadores durante os I super-passo.Custo de Comunicaao: E calc culado pelo somatrio dos super-passo de comunicaao somado ao somatrio do nmero o c o u total de R mensagens recebidas e E mensagens enviadas. 2.2.3.2 Modelo CGM O modelo CGM (Coarse Grained Multicomputer ) foi proposto por Dehne. O modelo CGM muito semelhante ao modelo BSP, No CGM existe um numero P de e processadores que possuem uma memria de tamanho O onde N o tamanho da entrada o e e P numero de processadores. Os processadores esto ligados por um roteador que envia a mensagens ponto-a-ponto. Um algoritmo CGM consiste de uma seqncia alternada de rodadas de comue putaao e rodada de comunicaao separada por uma barreira de sincronizaao. c c c No modelo CGM os processadores durante uma computaao podem utilizar o c melhor algoritmo sequencial em suas computaes locais, nas rodadas de comunicao co ca

17

eles podem trocar dados com o tamanho de sua memria dispon o vel. Custo total de comunicao: E igual ao numero de rodas de comunicaao. ca c Custo de computao: Custo total de computao denido analogamente. ca ca e

CGM.JPG Figura 2.2: Modelo CGM O modelo CGM tem o objetivo de diminuir o numero de rodadas de computaao, c os algoritmos produzidos geralmente so de granularidade grossa, que so mais apropria a ados para as maquinas alvo atuais, onde se apresenta maior perda de desempenho na comunicao, pois as mquinas possuem um alto n de desempenho de processamento. ca a vel

2.3

Ambientes de Troca de Mensagens


O paradigma da troca de mensagens na programaao paralela tem se tornado de c

grande importncia, devido a ser uma pea chave em algoritmos paralelos. Na construo a c ca de algoritmos paralelos necessrio que se crie uma ferramenta para que os processadores e a possam se comunicar durante o processamento dos dados. O objetivo ao se desenvolver um mecanismo de troca de mensagens que ele seja e projetado de forma que atenda varias plataformas assim podendo facilitar a vida dos seus usurios. a De acordo com Wilkinson e Allen(ALLEN., 1999). Existem trs maneiras de efee tuar a troca de mensagens: Desenvolvendo uma linguagem de programaao paralela; c

18

Estendendo a sintaxe e as palavras reservadas de uma linguagem seqencial de alto u n existente; vel Usando uma linguagem seqencial de alto n u vel existente e providenciando Uma biblioteca contendo as rotinas de troca de mensagens. MPI O MPI foi desenvolvido com o objetivo de produzir um padro de rotinas para a troca de mensagens, que fosse amplamente aceita e funcional, possibilitando sua utilizaao c em diferentes plataformas, visando melhorar e desenvolver o potencial da computao ca paralela. As principais verses do MPI so: o a LAM: executa em redes com estaes de trabalho. co MPICH: executa em diferentes plataformas. W32MPI: executa em PC usando Windows. O MPI prove uma biblioteca de rotinas para troca de mensagens estas sero a descritas na prxima secao. o c 2.3.0.3 Criao e Execuo de Processos ca ca A MPI utiliza o modelo esttico na criaao de processos, todos os processos a c so especicados antes da execuao e o sistema executa um nmero pr-determinado de a c u e processos. Na maioria das aplicaes existe um processo especial que controla a execuao co c dos demais processos, denominado processo mestre. Os demais processos so denominados a processos escravos. No modelo SPMD (Single Program, Multiple Data) o cdigo dos o diferentes processos so colocados dentro de um unico programa onde poss selecionar a e vel diferentes partes para cada processo. Cada processador carrega uma cpia deste programa o na sua memria local para ser executado. O modelo SPMD implementa um paralelismo o de dados. Ao se iniciar a utilizao MPI ela no disponibiliza uma iniciao dos processos ca a ca eles devem ser executados em uma maquina atravs de uma linha de comando e assim e por diante em outras maquinas. Deve-se inicializar a funao MPI Init() que ria iniciac lizar a MPI e aps a sua utilizaao ao termino das atividade deve-se utilizar a funao o c c

19

MPI Finalize() para nalizar o processo. Inicialmente todos os processos pertencem a um comunicador que o MPI COMM WORLD, o comunicador associa um escopo para e cada processador e por diante ele associa grupos de processadores que depois podem ser referenciados durante a troca de mensagens. 2.3.0.4 Comunicao Ponto-a-Ponto ca A comunicaao realizada atravs do envio e recebimento de mensagens. Essas c e e mensagens podem ser bloqueantes ou no-bloqueantes.Em MPI as mensagens de envio e a recebimento so implementadas como MPI Send() e MPI Recv(). a As chamadas bloqueantes em MPI as chamadas bloqueantes s retornam quando o esto totalmente completas localmente. a AS chamada no-bloqueantes esses tipos de mensagem retornam com a instruao a c estando completa ou no localmente e so implementadas em MPI assim MPI Isend() e a a MPI Irecv(). 2.3.0.5 Comunicao coletiva ca Na MPI a comunicaao coletiva utilizada quando existe a necessidade de um c e conjunto de processadores que devem realizar tarefas em conjunto onde essas mensagens so passadas utilizando tcnicas como envio de mensagens a todos ou mensagens para a e determinados processadores de um conjunto. Como a rotina MPI Bcast() que envia mensagens para todos os processadores. A MPI fornece um conjunto rotinas para se trabalhar com a manipulaao de c computadores trabalhando em paralelo proporcionando a comunicaao necessria para o c a funcionamento dos algoritmos paralelos.

Grafos e Algoritmos para Computar Circuitos de Euler

3.1

Grafos
A primeira evidncia do uso de grafos foi em 1736 quando Euler os utilizou para e

resolver o problema de caminhar nas pontes entre duas ilhas cortadas por um rio. Esse problema cou conhecido como o Problema das Pontes de Knigsberg, no qual havia 7 o pontes que cruzavam o rio Pregel. Desde ento os grafos tem sido utilizados em inmeras a u nalidades, que vo das telecomunicaoes at o planejamento de trajetos de ve a c e culos e circuitos digitais. Abaixo observe o grafo que representa o problema das pontes de Knigsberg,. o

Figura 3.1: Grafo

G=V,E V= A, B, C, D E= (A,C,c), (A,C,d), (A,B,a), (A,B,b), (A,D,e), (B,D,f), (C,D,g)

21

Na seqncia sero apresentados os conceitos necessrios sobre a teoria dos graue a a fos, utilizados para realizar os algoritmos para computao de circuitos de Euler, esses ca conceitos foram obtidos da obra de Szwarcter(SZWARCFITER, 1988). Um grafo G = (V, E) corresponde a um conjunto nito no vazio V de elementos a chamados vrtices e um conjunto E de pares de vrtices de V, chamados arestas. Se as e e arestas forem pares ordenados o grafo denominado orientado. Se as arestas forem pares e no-ordenados (u, v ) de vrtices o grafo dito no-orientado. Se (u, v ) uma aresta a e e a e no-orientada, u e v so adjacentes. Se uma aresta orientada, u o predecessor de v e a a e e v o sucessor de u. Neste trabalho consideramos que [V]= n e [ E ]= m. Uma extenso e a poss vel consiste em substituir, na denio de grafo, o conjunto de arestas E por um ca multi-conjunto. O efeito desta alteraao , naturalmente, permitir a existncia de mais c e e de uma aresta entre o mesmo par de vrtices, as quais so denominadas arestas paralelas. e a A estrutura assim denida um multigrafo. e

Em um grafo no-orientado, dene-se grau de um vrtice v V, denotadoporDv, comosendoon a e

Eadjacentesv.Emumgraf oorientado, ograudeentradadevonmerodearestasconvergentesav.Ograu e u Um grafo G = (V, E) bipartido quando o seu conjunto de vrtices V pode ser e e particionado em dois subconjuntos V1 e V2, tais que toda aresta de G une um vrtice de e V1 a outro de V2. Uma seqencia de vrtices v1,..., vk tal que (vj , vj+1) E, 1 j k u e 1, vk), ondek 1ocomprimentodocaminho. e Um sub-grafo G2 = (V2, E2) de um grafo G1 = (V1, E1), um grafo tal que V2 e V 1eE2 E1. Seja G = (V, E) um grafo no-orientado. Um grafo denominado conexo se, a e para todo par de vrtices u e v em V, existe um caminho entre u e v. e Denominam-se componentes conexos de um grafo G aos sub-grafos maximais de G que sejam conexos. A propriedade P, neste caso, equivalente a ser conexo. e Um ciclo, ou circuito, um caminho v1,...,vk, vk+1, sendo v1 = vk+1 e k e 3.U mgraf oquenopossuiciclosdenominadoac a e clico. Denomina-se arvore um grafo T = (V, E) que seja ac clico e conexo. Se um vrtice v da arvore T possuir grau igual a 1 ento v uma folha. Caso contrario, v um e a e e vrtice interno. e

1, edenominadocaminhodev1avk.U mcaminhodekvrticesf ormadopork1arestas(v1, v2), (v2, v3), . e e

22

Denomina-se sub-grafo gerador de um grafo G1 = (V1, E1), a um grafo G2 = (V2,

E2) de G1 tal que V1 = V2 e E1 E2.Quandoosubgraf ogeradorumarvore, elerecebeonomederv e a a Um circuito de Euler de um grafo G um ciclo que contm cada aresta de G e e exatamente uma unica vez. Um grafo G possui um circuito de Euler se, e somente se, todo vrtice de G e possuir grau par. Um grafo euleriano um grafo que possui um circuito de Euler.Um multigrafo e euleriano um multigrafo que possui um circuito de Euler. e

3.1.1

Circuitos de Euler
Acredita-se que a teoria dos grafos teve in no sculo XVIII quando o famoso cio e

matemtico Leonhard Euler resolveu o problema das pontes de Knigsberg. A soluao a o c deste problema considerado o primeiro teorema em teoria dos grafos (Teorema 1). A e idia de muitos algoritmos, seqenciais e paralelos, para obter circuitos de Euler baseada e u e no Teorema 1. Ele garante que qualquer grafo euleriano pode ser decomposto em um conjunto de circuitos disjuntos em arestas, denominado Partiao de Euler. O prximo c o passo consiste em combinar circuitos vizinhos, ou seja, circuitos que compartilham um vrtice, at que se obtenha um unico circuito que envolva todas as arestas do grafo. e e

II.JPG Figura 3.2: Grafo Euleriano

3.1.2

Aplicao ca
O Problema de Carteiro Chins e Uma das aplicaes mais conhecidas de circuitos de Euler o Problema do Carco e

teiro Chins. Um carteiro pega a correspondncia na Agncia dos correios, a entrega, e e e e retorna a agncia. Ele deve percorrer cada rua da sua rea pelo menos uma vez. O care a

23

teiro deseja escolher a sua rota de modo que ele caminhe o m nimo poss (rota tima). vel o Este problema foi proposto pelo matemtico chins Kuan em 1962. Esta situao pode a e ca ser modelada atravs de um grafo G onde as arestas correspondem s ruas e os vrtices e a e correspondem as intersecoes entre as ruas, ou entre sees das ruas. Se G euleriano, c co e ento qualquer circuito de Euler de G corresponde a uma rota tima para o carteiro pois a o percorre cada aresta exatamente uma vez. O problema facilmente resolvido neste caso e pois existe um bom algoritmo para determinar circuitos de Euler em grafos eulerianos proposto por Fleury. Uma alternativa para resolver o problema quando G no for euleriano detera e minar um multigrafo H de tamanho m nimo que contenha G como seu grafo subjacente. Podemos obter H duplicando cada aresta de G, ou seja, substituindo cada aresta por um par de arestas paralelas. O resultado um multigrafo euleriano H, pois H conexo e e e grau(v) = 2*grau(v) para todo v 2 V (G). Um circuito de Euler de H produz um ciclo que contm todas as arestas de G e Nas prximas seces sero apresentados os algoritmos para computaao de ciro co a c cuitos de Euler no modelo sequencial no modelo PRAM e no modelo BSP/CGM.

3.2

Algoritmo seq encial u


O algoritmo seqencial foi desenvolvido para ter sua aplicaao em maquinas u c

seqencial, onde a sua complexidade O (M + N ) ondeM representaonumerodearestaqueexistemnog u e (V, E). Para realizar um algoritmo seqencial se utiliza uma tcnica que a Busca em u e e Profundidade. Onde realiza uma busca por todos os vrtices do grafo. e e Entrada: V, o conjunto de vrtices de G. (2) E, o conjunto de arestas de G. e Sa da: Um circuito de Euler de G. Passos Algoritmo seqencial u (1)nciclos := 0 (2) enquanto existem arestas em G faa c (2.1) Escolha um vrtice v qualquer de G; e (2.2) Realize uma Busca em Profundidade em G, a partir de v, at um ciclo C; e

24

(2.3) Retirem de G as arestas de C; (2.4) Retire de G os vrtices de grau 0; e (2.5) nciclos := nciclos + 1; (3) enquanto nciclos > 1 faa c (3.1) Escolha dois ciclos Ci e Cj que tenham algum vrtice v e em comum; (3.2) Junte Ci e Cj em um unico caminho fechado em v; (3.3) nciclos := nciclos - 1; - Fim do Algoritmo Algoritmo Busca em profundidade. Entrada: (1) V, o conjunto de vrtices de G. (2) E, o conjunto de arestas de G. e Sa da: Uma busca em profundidade de G. (1) para cada vrtice v de G faa e c Marque v como n~o-visitado; a (2) para cada vrtice v de G faa e c se v n~o foi visitado ent~o a a Busca Prof(v) - Fim do Algoritmo Procedimento 1 Busca Prof(v) Entrada: (1) v 2 V. Sa da: Uma busca em profundidade a partir de v. (1) Marque v como visitado; (2) para cada vrtice w adjacente a v faa e c se w n~o foi visitado ent~o a a Busca Prof(w) - Fim do Procedimento Aplicamos o algoritmo busca e profundidade e o procedimento 1 Prof(v) para grafos no a conexos. caso o grafo seja conexo pode se utilizar diretamente o procedimento 1 Prof(v). Como podemos perceber nos algoritmos seqenciais para computaao de circuitos u c de Euler existe a necessidade de se utilizar o algoritmo da busca em profundidade, esse algoritmo no pode ser paralelizado com ecincia desejada, j foram realizadas varias a e a tentativas da produao de uma busca para a soluo paralela desse algoritmo, porm c ca e

25

sem sucesso. Assim surgi a necessidade de se encontrar alternativas para a busca em profundidade em algoritmos paralelos.

3.3
3.3.1

Algoritmos Paralelos no Modelo PRAM


Algoritmo Paralelo de Atallah-Vishkin
O algoritmo proposto por Atallah e VishkinAt encontra um circuito de Euler em

um grafo euleriano. Esse algoritmo foi desenvolvido no modelo PRAM. Descriao do algoritmo c Seja G = (V, E) um grafo euleriano e C = (C1, C2, ..., Ck) uma partiao de c Euler de G. O algoritmo obtm C atravs de duas ordenaoes lexicogrcas aplicadas as e e c a arestas de G. Como o grafo euleriano, o grau de sa de cada vrtice igual ao grau e da e e de entrada. As arestas so ordenadas duas vezes, a primeira pelo vrtice de destino da a e aresta e a segunda pelo vrtice origem da aresta. e Como a ordenao lexicogrca, o nmero de arestas da primeira ordenaao ca e a u c chegando ao vrtice v igual ao nmero de arestas saindo do vrtice v na segunda ore e u e denaao. Isso garante que a i -sima aresta (u, v) da primeira ordenaao ter como c e c a correspondente a i -sima aresta da segunda ordenaao (v, w). Isso para todas as arestas. e c Logo as duas ordenaoes denem uma relaao de sucessor. Novamente, pelo fato de que c c o grau de entrada igual ao grau de sa e da, temos um ciclo ou um conjunto de ciclos.

Seja H = (V, C, E ) um grafo bipartido, tal que, V V eosubconjuntodosvrticesatravsdo e e V aumvrticeu C , seociclorepresentadoporupassapelovrticev. e e Assim, o grafo bipartido H identica os vrtices de G atravs dos quais passam e e mais de um ciclo de C. O algoritmo constri uma arvore geradora T do grafo bipartido H. o T usada para identicar os vrtices atravs dos quais dois ou mais ciclos de C podem e e e ser unidos. O algoritmo utiliza a tcnica de Euler tour em rvores para realizar a unio e a a dos circuitos. Passos do algoritmo Atallah e Vishkin Complexidade: complexidade de tempo paralelo O(log2 n)utilizandoO(m)processadores. Entrada: (1) V, o conjunto de vrtices de G. (2) E, o conjunto de arestas de G. e Sa da: Um circuito de Euler de G.

26

(1) Obtenha uma partiao de Euler do grafo G usando ordena~es c~ co lexicogrfica de suas arestas; a (2) Construa o grafo auxiliar bipartido H = (V, C, E ) (2.1) Identifique, atravs de um representante do ciclo, a qual e ciclo da parti~o de Euler cada aresta pertence; ca (2.2) Construa o grafo bipartido H = (V, C, E ): V contm os e vrtices atravs dos quais passam mais de um ciclo da parti~o; e e ca C contm os representantes dos ciclos; um vrtice u de V e e e adjacente a um vrtice v de C se o ciclo representado por v e passa pelo vrtice u; e (3) Encontre uma arvore geradora T do grafo bipartido H (4) Construa o grafo T trocando cada aresta (i, j ) de T por duas arestas anti-paralelas (i, j ) e (j, i ). O grafo T contm um e circuito de Euler porque o grau de entrada de cada vrtice e e igual ao grau de sada; (5) Construa um ciclo L cujas arestas se alternam entre arestas de T e arestas de G. L ter a seguinte propriedade: as arestas de a G e as arestas de T aparecer~o em L na ordem, respectivamente, a de um circuito de Euler em G e de um circuito de Euler em T. Para tanto e utilizada a tcnica de computar circuitos de Euler e em arvores; (6) Remova de L as arestas de T deixando apenas as arestas que pertencem ao circuito de Euler de G; - Fim do Algoritmo -

3.3.2

Algoritmo de Cceres et al a
O algoritmo proposto por Cceres et al uma variaao do algoritmo de Atallah e a e c

Vishkin(N.CCERES N. DEO, 1992), que busca solucionar problemas no algoritmo anterior a simplicando suas estruturas e utilizando menor quantidade de processadores. Descriao do algoritmo por Cceres et al: c a Seja G = (V, E) um grafo euleriano e C = (C1, C2, ..., Ck) uma partiao de c Euler de G. Seja V 1 ? V o subconjunto dos vrtices que possuem mais de um ciclo de C e passando por eles. Seja C um conjunto de vrtices que possui uma correspondncia ume e para- um com os ciclos de C. Para rotular os vrtices em C escolhemos a menor aresta e

27

que pertence a cada um dos ciclos em C. A aresta escolhida denominada representante e de ciclo. Construa H = (V 1, C, E1) um grafo bipartido auxiliar de G, tal que as arestas em E1 conectam um vrtice vi V 1comosvrticesemC quecorrespondemaosciclosquepassamporvi. e e Os vrtices vi 2 V 1 de H devem ser ordenados, em ordem no-crescente, de seus e a graus e rotulados como v1, v2, ..., vjV1j. Isto ajuda a identicar um conjunto m nima de vrtices onde a operao de costura deve ser executado. e ca

Um suporte S em V 1 uma oresta geradora de H tal que cada c i C incideemScomexatame e V 1, k < j.U msuportedeV 1umacolecaodeestrelascujoscentrossoosvrticesdeV 1. e a e Um vrtice v V 1chamadodezerodif erencaseograudevemH eigualaograudevemS. e e Sejam e1, e2, ..., ek as arestas de G que entram em um mesmo vrtice vi ? V, e cada ej pertencente a um ciclo diferente da partiao de Euler C. Uma costura em vi c e uma operao que combina todos os ciclos que passam por vi em um unico ciclo. ca Passos do Algoritmo de Cceres et al a Complexidade: Complexidade de tempo paralelo O(log2 n)utilizandoO e
M log M

processado

Entrada: (1) V, o conjunto de vrtices de G. (2) E, o conjunto de arestas de G. e Sa da: Um circuito de Euler de G. (1) Obtenha uma partiao de Euler C do grafo G atravs de ordenaoes c~ e c~ lexicogrficas de suas arestas; a (2) Construa o grafo auxiliar bipartido H = (V 1, C, E1) (2.1) Encontre o subconjunto dos vrtices V 1 V que possuem e mais de ciclo de C passando atravs dele; e (2.2) Identifique, atravs de um representante do ciclo, a qual e ciclo da parti~o de Euler cada aresta pertence; ca (2.3) Construa o grafo bipartido H; (3) Ordene e rotule V 1, em ordem n~o-crescente, pelo grau de seus a vrtices; e (4) Determine os vrtices a serem costurados e (4.1) Compute um suporte S em V 1; (4.2) Para cada vrtice vi 2 V 1 que n~o seja zero - diferena, e a c adicione a S uma aresta arbitrria de E1 S que seja incidente a vi; a (4.3) Os vrtices vi 2 V 1 tal que o grau de vi em S e maior que 1 e

28

devem ser costurados; (5) Para cada v que deve ser costurado, combine todos os circuitos que passam atravs de v em um unico circuito; e (6) Repita os passos 2 a 5 at que um circuito de Euler seja encontrado; e - Fim do Algoritmo

3.4

O Algoritmo BSP/CGM
O algoritmo BSP/CGM proposto por Nasu(NASU, 2002) foi desenvolvido para

computar circuitos de Euler em grafos, esse algoritmo foi baseado nos algoritmos de Cceres et al e Atallah e Vishkin. Como em algoritmos paralelos existe a necessidade a se encontrar uma alternativa para a busca em profundidade utilizamos a alternativas adotadas no algoritmos de Cceres et al e Atallah e Vishkin. a O objetivo do algoritmos BSP/CGM e de reduzir o problemas em partes menores que esto em cada processador de tal maneira que ela possam ser transferidas para um a unico processador e serem calculadas em seqencialmente. O algoritmo BSP/CGM tem u complexidade menor que o algoritmo seqencial e sua implementaao se mostra realista em u c relaao a sua complexidade terica apresenta resultados previsto por isso ser utilizado no c o a trabalho. Assim apresenta um resultado de desempenho superior ao algoritmo seqencial u que o objetivo quando se tenta paralelizar algum algoritmo. e Descriao do algoritmo BSP/CGM por Nasu Agora vamos fazer uma descriao c c dos passos do algoritmo BSP/CGM para computar um circuito de Euler de um grafo euleriano. Este algoritmo utiliza os mesmos passos iniciais dos algoritmos de AtallahVishkin e Cceres et al. a Considere G = (V, E) um grafo euleriano e C = C1.C2.....Ck uma partio de ca Euler de G. Utilizamos o mtodo descrito pelo algoritmo de Atallah- Vishkin para obter e C. Seja H = (V, C, E) o grafo bipartido, denido pelo algoritmo de AtallahVishkin, que identica os vrtices de G atravs dos quais passam mais de um ciclo de e e C, e seja S uma rvore geradora de H. O algoritmo BSP/CGM utiliza uma estrutura a denominada esteio, para identicar os vrtices atravs dos quais dois ou mais ciclos de C e e devem ser unidos. Um esteio S* = (V *, C*, E*) um subgrafo de uma arvore geradora S de um e

29

grafo bipartido H = (V ,C , E), tal que, o grau de cada vrtice em V * maior ou igual e e a 2. O algoritmo utiliza a operaao de costura, denida pelo algoritmo de Cceres et c a al, para realizar a unio de dois ou mais ciclos que passam atravs de um mesmo vrtice. a e e Passos do algoritmo BSP/CGM Complexidade: O algoritmo BSP/CGM para computar o circuito de Euler de um grafo euleriano G = (V, E) utiliza O(log p) rodadas de comunicao e O ( m+n ) ca computaao local. c Entrada: (1) p processadores p0, p1, ..., pi. (2) Um grafo euleriano G = (V, E) especicado atravs da lista de suas arestas armazenadas no vetor edge. O vetor edge e est distribu entre os p processadores, m p arestas e n p vrtices em cada processador. a do e Sa da: Um circuito de Euler de G.

(1) Obtenha uma partiao de Euler do grafo G c~ (1.1) Utilize um algoritmo BSP/CGM de ordena~o para obter uma ordenaao ca c~ lexicogrfica das arestas de G pelo vrtice destino; a e (1.2) Utilize um algoritmo BSP/CGM de ordena~o para obter uma ordenaao ca c~ lexicogrfica das arestas de G pelo vrtice origem; a e (1.2) Utilize um algoritmo BSP/CGM de Duplica~o Recursiva para ca identificar, atravs de um representante de ciclo, a qual ciclo da e parti~o de Euler cada aresta pertence; ca (1.3) Calcule o nmero de circuitos da Parti~o de Euler u ca (1.3.1) Se o nmero de circuitos for igual a 1 ent~o o circuito de u a Euler foi encontrado e finalize o algoritmo. (2) Construa o grafo bipartido H (2.1) Construa o grafo bipartido H = (V 0 , C0 , E0 ); (2.2) Elimine as arestas replicadas de H, se houver, em cada processador e tambm entre os processadores; e (2.3) Elimine de H todas as arestas que incidem em vrtices com grau e menor que 2; (3) Construa uma arvore geradora de H (3.1) Utilize um algoritmo BSP/CGM para obter uma arvore geradora S = (V 0 , C0 , E*) de H;

30

(3.2) Elimine de S todas as arestas que incidem em vrtices de V 0 com e grau menor que 2; (3.3) Determine o nmero de arestas que restaram [ E* ]; u (4) Realize a costura (4.1) Se [E*] < O(n / p ) ent~o envie as arestas a serem a costuradas para um nico processador e costure sequencialmente; u (4.2) Sen~o a (4.2.1) Distribua E entre os processadores; (3.5.2) Execute a costura distribuda das arestas; - Fim do Algoritmo -

Referncias Bibliogrcas e a
ALLEN., B. Wilkinson M. Parallel Programing: Techniques and Applications Using Networked Workstations and Parallel Computers. [S.l.]: Prentice Hall, 1999. GOTTLIEB, A. Highly Parallel Computing. [S.l.]: The Benjamin-Cummings Publishing Company, 1994. NASU, Claudia Yoshie. Algoritmo BSP/CGM para Computao de Circuitos de Euler ca em Grafos. [S.l.: s.n.], 2002. N.CCERES N. DEO, S. Sastry e J. L. Szwarcter E. On nding euler tours in parallel a Parallel Processing Letters. [S.l.]: 3(3):223-231, 1992. SZWARCFITER, J. L. Grafos e Algoritmos Computacionais. [S.l.]: Editora Campus, 1988.

Você também pode gostar