Vous êtes sur la page 1sur 5

Otimizao de Solues atravs da Programao

Paralela.

Pereira, Daniela Garcia; Assis, Umberto Fonseca de; Carvalho, Maicon.


Centro Universitrio Plnio Leite (UNIPLI).

Summarium
Abstract:

Abstract:

Actually, the many existing reas demand a

bigger computer processing capacity.

Some of these areas like Engineer,

Medicine or even Astronomy have been looking for processing capacities


never saw before.

These facts can become a problem if we consider the

high cost to develop new technologies or new chips. So, in this scenario,
we introduce the Parallel Computing like an answer for these new demand.

Resumo:

Atualmente, as diversas reas existentes, demandam por

maior capacidade computacional. Algumas dessas reas como Engenharia,


Medicina e at mesmo Astronomia, buscam por capacidades de processamento nunca visto antes. Estes fatores podem tornar-se um problema, se
considerarmos o alto custo para desenvolver novas tecnologias ou novos
chipes. Ento, neste cenrio, apresentamos a Computao Paralela como
uma resposta para esta nova demanda.

1. Introduo

Considerando a crescente demanda acerca de novas tecnologias, maior capacidade de processamento, o alto custo envolvido no processo de desenvolvimento de novos chips e as necessidades impostas por mercado crescente, torna-se
necessria a criao de solues simples e de baixo custo. Nesse contexto, surge a
computao paralela, como a soluo ideal para o nosso problema. Considera-se
por denio, a computao paralela, pelo uso de vrias unidades de processamento para executar uma computao mais rpida baseando-se no fato de que
o processo de resoluo de um grande problema possa ser divido em problemas
menores, que ento so resolvidos simultaneamente atravs de algum tipo de
coordenao.
2. O problema do caixeiro via jante

O Problema do Caixeiro Viajante um dos mais clssicos problemas de Complexidade. Caracteriza-se por, dado um conjunto de n cidades e uma matriz
1

de distncias distancias [1..n,1..n], fazer com que seja encontrado um caminho


que tenha a menor distncia a ser percorrida para que sejam visitadas todas
as cidades passando exatamente uma nica vez em cada cidade e retornando a
cidade de origem. O problema do caixeiro viajante considerado um problema
de otimizao. Alm de exibir uma soluo requerida certa qualidade tima
da soluo. Esse problema NP-completo, pois no tem soluo determinstica
polinomial. Para solucionar o problema do Caixeiro Viajante, em um cluster
montado sobre mquinas virtuais, foi utilizada a biblioteca para programao
distribuda MPI. MPI uma biblioteca de troca de mensagens desenvolvida
para ambientes de memria distribuda, mquinas paralelas massivas, NOWs
(network of workstations) e redes heterogneas. Cluster uma mquina de alto
desempenho que possui uma arquitetura baseada na reunio de um conjunto
de estaes de trabalho independentes, interconectado por uma rede de comunicao, formando uma plataforma de execuo de aplicaes paralelas de alto
desempenho. Para o nosso experimento, foi utilizada uma plataforma de execuo para aplicaes paralelas, um cluster formado por cinco nodos. Cada
nodo um Celeron Dual-Core, com 64 M de memria RAM e clock de aproximadamente 200Mhz. Estes nodos esto interconectados por uma nica rede de
comunicao FastEthernet emulada pelo software VirtualBox. O sistema operacional Linux (Slackware), com kernel igual ou superior a 2.4.8 e compilador
C++ (gcc).
3. O algoritmo

O algoritmo utilizado, "Replicated Workers with a Bag of Tasks", se baseia


em um conjunto de trabalhadores que buscam tarefas em uma sacola compartilhada. Cada tarefa consiste em um caminho parcial das cidades contidas na
matriz original. Essas tarefas so processadas pelos trabalhadores de modo que
seja acrescentada mais uma cidade, at que seja encontrado um caminho que
passe por todas as cidades do problema. Quando o primeiro caminho encontrado, ele designado como mnimo. Assim que novos caminhos completos so
encontrados, eles substituem o primeiro como o caminho mnimo, caso a sua
distncia seja realmente menor. Os dados iniciais necessrios para o algoritmo
so o nmero de trabalhadores, o nmero de cidades e o conjunto de distncias
que separam cada cidade. Neste caso, as cidades so ,supostamente, totalmente
conectadas. Na gura 1 se v um exemplo de uma congurao com 4 cidades e
a matriz gerada. possvel representar um cenrio onde as cidades no sejam
totalmente conectadas, indicando a distncia entre elas como um valor extremamente alto para sua distncia. Dessa forma, esse caminho sempre ser ignorado
pelo algoritmo.

Figura 1.

4. O desempenho

Para realizar os testes, foram criados arquivos contendo matrizes de distncias


para as cidades. Cada arquivo desenvolvido contm os valores apresentados no
texto a seguir. Na realizao dos testes, primeiramente foi executado a verso
sequencial do programa, e consequentemente a verso paralela. Porm, para
este experimento, exibiremos apenas os resultados para dez cidades, tendo em
vista que o objetivo maior demonstrar que a programao paralela mais eciente que a programao sequencial para grandes problemas. Constatamos que
para 10 cidades, a soluo do algoritmo em C obteve tempo de processamento
2m37.300s, com resultado 201 unidades, sendo o caminho encontrado 0 8 3 7
1 9 6 2 4 5. J para o algoritmo em MPI, o mesmo resultado foi obtido em
um tempo de 4m27.448s, conrmando a vantagem da execuo do algoritmo
paralelo no cluster. Apenas no processamento de matrizes grandes, portanto,
superiores a 10, pode-se vericar o grande salto de desempenho da soluo em
MPI para a soluo C. Abaixo, podemos vericar a sada exibida pelo algoritmo
desenvolvido em MPI.
Numero de Cidades: 10
Distancia entre as cidades:
0 28 26 27 33 20 68 25 34 92
28 0 75 73 97 74 64 10 34 10
26 75 0 45 19 79 1 2 76 62
27 73 45 0 34 50 51 3 15 98
33 97 19 34 0 32 95 77 59 28
20 74 79 50 32 0 97 79 54 83
68 64 1 51 95 97 0 72 81 57
25 10 2 3 77 79 72 0 21 55
34 34 76 15 59 54 81 21 0 73
92 10 62 98 28 83 57 55 73 0

Principal Iniciado ...


Slave iniciado ...
Slave iniciado ...
Slave iniciado ...
Slave iniciado ...
Econtrado melhor caminho 1, origem = 2, distancia = 237
Econtrado melhor caminho 2, origem = 3, distancia = 213
Econtrado melhor caminho 3, origem = 1, distancia = 201
Menor caminho:
0 8 3 7 1 9 6 2 4 5; distancia = 201
Slave
Slave
Slave
Slave

3 recebido DONE_TAG ..
2 recebido DONE_TAG ..
1 recebido DONE_TAG ..
4 recebido DONE_TAG ..

Tempo decorrido: 2m37.300s


O grco abaixo se refere aos testes realizados em paralelo, com a mesma
matriz, com diferentes quantidades de nodos escravos.

Como podemos observar, para o tempo real, quanto mais aumentamos o


nmero de mquinas(nodos), menor o tempo real de processamento.

5. Observaes

O tempo utilizado para os testes foi o tempo real (o tempo do relgio de parede
- hora do incio ao m da chamada). Este o tempo decorrido, incluindo fraes
de tempo usado por outros processos e do tempo que o processo passa bloqueado
(por exemplo, se est espera de I / O para completar).
6. Concluso

O objetivo desse trabalho foi implementar a soluo do problema do Caixeiro


Viajante em um ambiente paralelo, demonstrando na pratica a maior ecincia da programao paralela em relao a programao sequencial. Atravs de
um Cluster Beowulf homogneo, simulado em pequenas maquinas virtuais conseguimos resolver um problema do tipo NP - Completo em um tempo muito
inferior a resoluo do mesmo problema por um algoritmo sequencial.
Conspectus librorum

[1. CORMEN, Thomas. Algoritmos, Teoria e Prtica. 2a Edio, 2002. Ed. Campus.]

[3. Ziviani, N. Projeto de Algoritmos Com Implementaes em Pascal e C, Pioneira Thomson Learning, 1993.

Vous aimerez peut-être aussi