• Nenhum resultado encontrado

Comparação entre Abordagens de Paralelização para o Problema do Jogo da Vida

N/A
N/A
Protected

Academic year: 2021

Share "Comparação entre Abordagens de Paralelização para o Problema do Jogo da Vida"

Copied!
8
0
0

Texto

(1)

Comparac¸˜ao entre Abordagens de Paralelizac¸˜ao para o

Problema do Jogo da Vida

Daniel Michelon de Carli1,2, Eduardo Spolaor Mazzanti1,2,3, Rodrigo Dewes1,

Ronaldo Canofre M. dos Santos1,3, Valdir Stumm J ´unior1, Andrea Schwertner Char˜ao3 1Acadˆemico do Curso de Ciˆencia da Computac¸˜ao

2GPIM - Grupo de Processamento de Informac¸˜ao Multim´ıdia 3Programa de Educac¸˜ao Tutorial (PET) – Curso de Ciˆencia da Computac¸˜ao

Universidade Federal de Santa Maria (UFSM)

{dcarli, mazzanti, dewes, canofre, junior, andrea}@inf.ufsm.br

Resumo. O “Jogo da Vida” ´e um exemplo cl´assico de autˆomato celular que simula a evoluc¸˜ao de seres vivos em um dado espac¸o ao longo do tempo. De-pendendo dos dados de entrada, o tempo de processamento de uma simulac¸˜ao pode ser elevado. Neste artigo, apresenta-se uma comparac¸˜ao entre duas abor-dagens de paralelizac¸˜ao para o problema do Jogo da Vida, visando a reduc¸˜ao do tempo de simulac¸˜ao atrav´es do uso de m´ultiplos computadores em paralelo. Ambas abordagens utilizam o padr˜ao MPI (Message Passing Interface) para implementac¸˜ao da troca de mensagens entre os computadores cooperantes, por´em com diferentes estrat´egias de distribuic¸˜ao do trabalho e comunicac¸˜ao entre os processos. Os resultados obtidos evidenciam que a paralelizac¸˜ao deste problema n˜ao ´e trivial, mas que em certos casos ´e poss´ıvel obter ganhos de desempenho com ambas abordagens. Al´em disso, mostra-se que o desempenho de uma das implementac¸˜oes ´e ligeiramente superior `a outra em todos os casos considerados.

1. Introduc¸˜ao

O Jogo da Vida (Game of Life) ´e um autˆomato celular desenvolvido pelo matem´atico britˆanico John Horton Conway em 1970. Este autˆomato simula, atrav´es de um algoritmo simples, a evoluc¸˜ao dinˆamica de uma sociedade de organismos vivos, sendo aplicado em diversas ´areas da ciˆencia, como na biologia, na matem´atica, na economia, entre out-ras [Bak et al. 1989].

Este autˆomato ´e um jogo sem jogadores. Ele recebe como dados de entrada uma populac¸˜ao de seres dispostos sobre uma grade bi-dimensional (matriz) e a quantidade de tempo pelo qual essa populac¸˜ao ir´a interagir. A cada iterac¸˜ao (passo de tempo), aplica-se um conjunto de regras simples `a matriz contendo os dados da “gerac¸˜ao atual”, produzindo assim uma “nova gerac¸˜ao”.

A matriz utilizada para o Jogo da Vida ´e composta por c´elulas que podem possuir somente dois valores (0 ou 1). Caso a c´elula represente um ser vivo, ela ser´a definida com o n´umero 1, caso contr´ario, ser´a definida com 0. Uma c´elula que inicialmente contenha o valor 0 e possua trˆes vizinhos contendo 1 ir´a assumir o valor 1 (ou seja, ir´a nascer). Se a c´elula j´a possuir o valor 1 e tiver dois ou trˆes vizinhos com o mesmo valor ele se manter´a

(2)

viva. Em todos os outros casos a c´elula passar´a a representar um ser morto (assumir´a o valor 0).

O Jogo da Vida, bem como outros autˆomatos celulares, pode levar a um longo tempo de processamento para dados de entrada que possuam um grande n´umero de gerac¸˜oes e/ou uma matriz de consider´avel tamanho. A fim de reduzir este tempo, pode-se utilizar o processamento paralelo.

A pr´atica da programac¸˜ao paralela pode ser considerada como a divis˜ao de um programa seq¨uencial em partes menores que possam ser executadas de forma simultˆanea por processadores diferentes [Wilkinson and Allen 2005]. Com isso ´e poss´ıvel reduzir o tempo total de processamento de um programa e permitir sua execuc¸˜ao em um tempo aceit´avel, contar com a disponibilidade de mais recursos como mem´oria e capacidade de processamento e, tamb´em, diminuir custos atrav´es da utilizac¸˜ao de um grande n´umero de estac¸˜oes de trabalho ao inv´es de um super-computador.

Neste contexto, este trabalho tem como objetivo comparar duas implementac¸˜oes diferentes de paralelizac¸˜ao de autˆomatos celulares, utilizando como exemplo o Jogo da Vida. Ambas implementac¸˜oes visam a reduc¸˜ao do tempo de processamento para en-tradas com grades bi-dimensionais com uma ordem elevada ou um grande n´umero de gerac¸˜oes. Para a realizac¸˜ao de estudos comparativos, as duas abordagens utilizam es-trat´egias diferenciadas para a realizac¸˜ao da distribuic¸˜ao de carga entre os processos, tornando-se poss´ıvel a visualizac¸˜ao dos efeitos dessas escolhas nos resultados obtidos nas execuc¸˜oes. Para descrever o trabalho realizado, o artigo encontra-se organizado da seguinte forma: nas sec¸˜oes 2 e 3 descreve-se uma metodologia cl´assica para paralelizac¸˜ao e apresenta-se os algoritmos implementados; na sec¸˜ao 4 descreve-se a metodologia uti-lizada para avaliac¸˜ao do desempenho das implementac¸˜oes; na sec¸˜ao 5 realiza-se a an´alise dos resultados e a avaliac¸˜ao dos mesmos e na sec¸˜ao 6, por fim, trac¸am-se as conclus˜oes sobre o trabalho desenvolvido.

2. Metodologia de Paralelizac¸˜ao

Dado um problema a ser paralelizado, existe mais de uma forma de realizar a divis˜ao do trabalho para que os processos possam realizar o processamento de modo paralelo. Para facilitar e padronizar o desenvolvimento de um algoritmo paralelo, segue-se uma abor-dagem met´odica, a qual provˆe mecanismos para avaliac¸˜ao das poss´ıveis alternativas de implementac¸˜ao. Esta estrat´egia pode ser seguida de um modo geral no desenvolvimento de programas paralelos e ´e dividida em quatro est´agios: particionamento, comunicac¸˜ao, aglomerac¸˜ao e mapeamento [Foster 1995].

A primeira fase deste m´etodo consiste em identificar os pontos potenciais onde o paralelismo possa ser explorado. Esta fase chama-se de fase de particionamento e ´e dividida em duas estrat´egias b´asicas, de acordo com a soluc¸˜ao para o problema: parti-cionamento por decomposic¸˜ao de dom´ınio ou por decomposic¸˜ao funcional.

Na segunda fase do m´etodo utilizado ´e analisada a comunicac¸˜ao necess´aria a ser realizada entre as tarefas geradas pela fase de particionamento. Embora o projeto dos programas paralelos busque diminuir ao m´aximo a necessidade de comunicac¸˜ao entre os processos, dificilmente ´e conseguida a eliminac¸˜ao por completo desta custosa ativi-dade. As estrat´egias de comunicac¸˜ao utilizadas neste trabalho s˜ao v´arias e se aplicam a

(3)

diferentes pontos considerados na implementac¸˜ao da soluc¸˜ao paralela para o problema proposto.

O pr´oximo est´agio do projeto do algoritmo paralelo se chama fase de aglomerac¸˜ao e visa, em geral, diminuir o n´umero de tarefas geradas pela fase de ticionamento. Esta fase ´e de extrema importˆancia para o desempenho do programa par-alelo, pois, caso seja tomada uma decis˜ao equivocada na fase de aglomerac¸˜ao, deixando processos com tempo de comunicac¸˜ao maiores que o tempo de processamento, o desem-penho do programa paralelo poder´a ficar abaixo do desemdesem-penho obtido com o programa seq¨uencial.

Na ´ultima fase, de mapeamento, define-se o computador onde cada tarefa dever´a ser executada. Neste trabalho, esta fase foi executada concomitantemente com a fase de aglomerac¸˜ao.

3. Algoritmos Implementados

Para a implementac¸˜ao das duas abordagens comparadas neste artigo, utilizamos a es-trat´egia do particionamento por decomposic¸˜ao de dom´ınio, onde a ´area de dados do prob-lema, que ´e representada pela grade bi-dimensional, ´e dividida entre os processos para que estes realizem o processamento local. A divis˜ao, nas duas implementac¸˜oes, foi real-izada por linhas, ou seja, cada processo envolvido na computac¸˜ao recebe uma determinada quantidade de linhas pelas quais ser´a o respons´avel.

A escolha por esta estrat´egia justifica-se pelo fato de os dados do problema serem compostos por uma matriz que pode ser facilmente distribu´ıda entre os processos. Essa divis˜ao deve ser preferencialmente igualit´aria, para que todos os processadores sejam totalmente aproveitados. Caso hajam processadores ociosos ou sobrecarregados devido `a m´a distribuic¸˜ao do trabalho, o desempenho do programa paralelo podem ficar aqu´em do esperado.

A outra alternativa de particionamento, por decomposic¸˜ao funcional, necessita de uma an´alise sobre a computac¸˜ao que deve ser realizada. Para que seja poss´ıvel uti-lizar esta abordagem, ´e necess´ario que se consiga dividir o problema em tarefas indepen-dentes, a fim de realizar o particionamento dos dados que ser˜ao destinados a cada uma destas. Portanto, de acordo com a descric¸˜ao do problema proposto, esta alternativa de particionamento torna-se invi´avel, pois h´a bastante dependˆencia entre as computac¸˜oes a serem realizadas sobre os dados.

Na fase da comunicac¸˜ao define-se os pontos cr´ıticos nos quais ´e necess´aria a comunicac¸˜ao entre os processos. O primeiro ponto onde ´e necess´ario que se defina um modo de comunicac¸˜ao ´e ap´os a leitura dos dados vindos da entrada padr˜ao, pois o pro-cesso que realiza essa leitura dever´a compartilhar com os outros a matriz que representa o tabuleiro do Jogo da Vida. Ambas implementac¸˜oes utilizam o padr˜ao MPI (Message

Passing Interface) [Gropp et al. 1996] para comunicac¸˜ao entre os processos. No entanto,

tem-se nesse ponto uma das diferenc¸as b´asicas entre as duas implementac¸˜oes:

• na primeira implementac¸˜ao, chamada de BDMB (Balanceamento distribu´ıdo com

mensagem bloqueante) devido `as suas caracter´ısticas, um processo realiza a leitura da grade e envia, atrav´es da chamada `a func¸˜ao de comunicac¸˜ao coletiva MPI Bcast, a matriz inteira para todos os processos, como pode ser visto na figura

(4)

1 item A;

• na segunda implementac¸˜ao, nomeada de BCMNB (Balanceamento

central-izado com mensagem n˜ao-bloqueante) tamb´em devido `as suas caracter´ısticas de comunicac¸˜ao, a matriz ´e dividida no processo que realiza sua leitura e, atrav´es de chamadas `a func¸˜ao MPI Send, s˜ao enviadas as sub-matrizes aos processos para que estes possam realizar seu processamento, como est´a ilustrado na figura 1 item A.

Um ponto importante que foi analisado durante a fase de comunicac¸˜ao ´e o com-partilhamento de linhas entre os processos durante o c´alculo das gerac¸˜oes. De acordo com a definic¸˜ao do problema do Jogo da Vida, para que seja calculado um novo valor para um item da matriz, ´e necess´ario que se consulte os valores dos itens vizinhos a este. Este detalhe traz uma complicac¸˜ao adicional `a paralelizac¸˜ao do problema, pois para que um processo calcule os valores dos itens de sua primeira linha, ´e necess´ario que este tenha acesso aos valores atualizados da ´ultima linha do processo respons´avel pela sub-matriz imediatamente acima. Do mesmo modo, para calcular sua ´ultima linha, ´e necess´ario que o processo disponha da primeira linha da sub-matriz que localiza-se imediatamente abaixo. Esse compartilhamento de dados exige que os processos troquem mensagens entre si a cada c´alculo de gerac¸˜ao.

As duas abordagens seguem estrat´egias um pouco diferentes com relac¸˜ao `a comunicac¸˜ao a cada c´alculo de gerac¸˜ao. Enquanto a implementac¸˜ao BDMB realiza a troca de linhas entre processos atrav´es de rotinas de envio bloqueantes (MPI Send), a implementac¸˜ao BCNMB utiliza como recurso rotinas de envio n˜ao-bloquantes (MPI Isend), para que os processos n˜ao fiquem bloqueados durante o envio de suas linhas. A figura 1 item B ilustra as diferenc¸as entre as duas abordagens utilizadas nesse artigo, quanto ao tipo de comunicac¸˜ao utilizado.

A ´ultima fase da execuc¸˜ao onde deve ser realizada comunicac¸˜ao entre os proces-sos ´e quando os procesproces-sos tiverem terminado de executar seus c´alculos, quando devem devolver suas sub-matrizes para que um processo coordenador possa realizar a mon-tagem da matriz de sa´ıda do programa. A figura 1 item C ilustra esta fase para ambas as implementac¸˜oes.

4. Metodologia de Avaliac¸˜ao de Desempenho

A fim de avaliar e comparar o desempenho das duas implementac¸˜oes descritas acima, realizou-se uma s´erie de execuc¸˜oes paralelas variando-se os parˆametros de entrada e o n´umero de computadores utilizados.

Os testes foram executados no N´ucleo da Ciˆencia da Computac¸˜ao (NCC) da UFSM, em computadores Intel(R) Pentium(R) 4 de 2GHz, com 512Mb de mem´oria RAM, rodando o sistema operacional GNU/Linux vers˜ao 2.6.19, com distribuic¸˜ao Gen-too. Para a troca de mensagens entre as m´aquinas foi utilizada uma rede Fast Ethernet.

Para a realizac¸˜ao dos testes foram criados arquivos com grades de 20 linhas por 20 colunas (20x20), 500 linhas por 500 colunas (500x500) e 2500 linhas por 2500 colunas (2500x2500), todos com 5000 gerac¸˜oes (passos de tempo). Foram utilizados os mesmos dados para as diferentes implementac¸˜oes.

(5)

Figura 1. Diagrama da implementac¸ ˜ao dos algoritmos

serial) e de 2 a 7 processadores. Para ter uma melhor confiabilidade nos resultados, todos os testes foram executados 10 vezes e ent˜ao foi calculada a m´edia dos 5 melhores tempos, exceto quando os tempos medidos variavam 0,2 segundos da m´edia. Nesse ´ultimo caso, todos os tempos que estavam nessa margem de tolerˆancia eram levados em conta para o c´alculo da m´edia para dado n´umero de processadores.

Essa metodologia foi adotada devido `a grande variac¸˜ao apresentada nos tempos para uma mesma matriz e um mesmo n´umero de processadores. Esse problema deve-se ao fato das m´aquinas utilizadas n˜ao serem exclusivas para teste, podendo sofrer influˆencia de outros usu´arios. Para complementar a an´alise dos resultados, calculou-se a acelerac¸˜ao (speed-up)1.

1O speed-up para N processadores ´e dado pela relac¸˜ao entre o tempo de execuc¸˜ao seq¨uencial e o tempo

(6)

5. Resultados

Para ambas soluc¸˜oes paralelas, o tempo de execuc¸˜ao da matriz 20x20 foi pior que tempo do programa seq¨uencial, o que pode ser facilmente verificado pelo gr´afico de speed-up mostrado na figura 2. Isso deve-se ao fato de que os programas paralelos gastaram mais tempo com comunicac¸˜ao entre os processos do que propriamente processando o algo-ritmo. Entretanto, o algoritmo BDMB obteve um desempenho ligeiramente superior pelo fato de ter gasto menos tempo na comunicac¸˜ao para distribuic¸˜ao das tarefas, como pode ser visto na tabela da figura 2.

Figura 2. Gr ´afico do speed-up da matriz 20x20 e tabela comparativa de tempo gasto para distribuir as tarefas.

No caso da execuc¸˜ao da matriz 500x500 e 2500x2500, podemos analisar atrav´es dos gr´aficos da figuras 3 e 4, respectivamente, que a execuc¸˜ao BDMB obteve um melhor desempenho.

Para a matriz 500x500, isso ´e evidenciado pela tabela da figura 3, que mostra que o tempo gasto pelo BDMB na comunicac¸˜ao e distribuic¸˜ao das tarefas ´e menor que a implementac¸˜ao que utiliza a estrat´egia BCMNB. Essa diferenc¸a de desempenho em relac¸˜ao `a implementac¸˜ao BCMNB deve-se principalmente pelas caracter´ısticas da rede Fast Ethernet. Esta rede de forma geral n˜ao apresenta um bom desempenho, principal-mente em relac¸˜ao `a sua latˆencia. Nesse sentido, o BDMB se favorece ao enviar soprincipal-mente uma ´unica mensagem para todas as m´aquinas e cada m´aquina separando uma sub-matriz para efetuar seu processamento. Como o BCNMB divide a matriz em um nodo central-izado, o mesmo demora para redistribuir as tarefas aos demais processos. Desse modo, o BCMNB perde desempenho pelo fato da rede possuir uma latˆencia relativamente alta.

Contudo, ainda que o algoritmo BDMB apresente um melhor speed-up para a ma-triz 2500x2500, o desempenho do algoritmo BCMNB melhorou consideravelmente. Essa melhora deve-se ao fato da matriz 2500x2500 ocupar proximadamente 12 Mb de mem´oria RAM, sendo que para o tr´afego de uma matriz t˜ao grande utilizou-se diversos datagramas.

(7)

Figura 3. Gr ´afico do speed-up da matriz 500x500 e tabela comparativa de tempo gasto para distribuir as tarefas.

Figura 4. Gr ´afico do Speedup da matriz 2500x2500 e tabela comparativa de tempo gasto para distribuir as tarefas.

Nessa situac¸˜ao essa abordagem se mostrou eficiente, conseguindo obter desempenho mais pr´oximo da implementac¸˜ao BDMB.

H´a tamb´em que se ressaltar que, neste ´ultimo caso, a relac¸˜ao entre o tempo de computac¸˜ao e o tempo de comunicac¸˜ao ´e maior do que nos outros casos, j´a que a matriz ´e de grande dimens˜ao e cada processo calcula sub-matrizes de tamanho significativo. Este fator beneficia ambas implementac¸˜oes, como se pode confirmar atrav´es dos resultados

(8)

obtidos.

6. Conclus˜ao

Este artigo apresentou uma comparac¸˜ao entre a implemenc¸˜ao serial e duas implementac¸˜oes paralelas de um problema do tipo autˆomato celular, utilizando com ex-emplo o Jogo da Vida. Com este trabalho, demonstra-se que a paralelizac¸˜ao de autˆomatos pode auxiliar na obtenc¸˜ao de resultados de forma mais r´apida, em casos de entradas muito grandes. Isso mesmo com implementac¸˜oes diferenciadas.

A comparac¸˜ao dos algoritmos demonstra que, para matrizes de tamanho inter-medi´ario, eles apresentam algumas diferenc¸as no tempo de execuc¸˜ao, mas `a medida que aumenta a entrada, seus resultados aproximam-se. Esse resultado confirma que a paralelizac¸˜ao tende a diminuir o tempo de processamento, resultando em respostas mais r´apidas, independente de qual dos dois algoritmos tenha sido utilizado.

No entanto, constata-se que a divis˜ao ideal de cada matriz deve levar em considerac¸˜ao o n´umero de processadores e a comunicac¸˜ao da rede, pois, do contr´ario, nem sempre o aumento do n´umero de processadores levar´a `a uma melhora no tempo de processamento, podendo ocorrer uma piora em alguns casos.

Referˆencias

Bak, P., Chen, K., and Creutz, M. (1989). Self-organized criticality in the game of life.

Nature, (342):780–782.

Foster, I. (1995). Designing and Building Parallel Programs. Addison-Wesley Inc. Gropp, W., Lusk, E., Doss, N., and Skjellum, A. (1996). High-Performance, Portable

Implementation of the MPI Message Passing Interface Standard. Parallel Computing, 22(6):789–828.

Referências

Documentos relacionados

Essa onda contrária às vacinas tem preocupado autoridades do mundo todo, pela facilidade e rapidez com que as informações são compartilhadas atualmente na

Para casos específicos, os contadores são procurados, como por exemplo a declaração do imposto de renda no qual muitos alegaram se tornar o período de maior contato, pois os

O 6º ano do Mestrado Integrado em Medicina (MIM) é um estágio profissionalizante (EP) que inclui os estágios parcelares de Medicina Interna, Cirurgia Geral,

O objetivo desse estudo é realizar uma revisão sobre as estratégias fisioterapêuticas utilizadas no tratamento da lesão de LLA - labrum acetabular, relacionada à traumas

De acordo com a legislação portuguesa, estão sujeitos a receita médica os medicamentos que possam constituir um risco para a saúde do doente, direta ou

Outras possíveis causas de paralisia flácida, ataxia e desordens neuromusculares, (como a ação de hemoparasitas, toxoplasmose, neosporose e botulismo) foram descartadas,

Uma análise do gráfico representado na figura 9, mostra que os entrevistados possuem muita facilidade na utilização dos computadores do Paraná Digital, o que se

Desde logo, a nossa compreensão e interpretação da importância funcional e ritual das lamentações públicas das carpideiras e dos carpideiros egípcios é sublinhada pelo