4.3 Resultados dos Testes de Desempenho
4.3.2 Abordagem 1
Na primeira abordagem, fazemos uma comparação entre o algoritmo paralelo e o algoritmo seqüencial para o princípio de decomposição Dantzig-Wolfe. O objetivo era mostrar, na prática, o quanto é adequado aplicar o paralelismo ao princípio de decomposição. Os testes foram feitos com o propósito de comparar as versões paralela e seqüencial do algoritmo de decomposição e de determinar qual o speedup obtido. Aproveitamos essa seção de testes também para mostrar como o método de decomposição se comporta bem melhor do que um método genérico de resolução de problemas de programação linear (Simplex) quando aplicado a um problema cuja matriz dos coeficientes possui estrutura bloco-angular. O Simplex usado nessa abordagem é o mesmo Simplex Revisado que os algoritmos paralelo e seqüencial do princípio de decomposição utilizaram para encontrar as soluções dos subproblemas.
Na tabela 4.1, mostramos os tempos médios obtidos nos testes de execução em um problema de dimensão 1000. Os tempos estão em segundos (s) e são mostrados de acordo com o número de restrições de acoplamento e com o número de processadores utilizados.
Tabela 4.1: Tempos médios de execução obtidos nos testes da abordagem 1 (algoritmo paralelo x algoritmo
sequencial) para problema de dimensão 1000.
0 50 100 150 200 Tempo (s) 50 70 100
Número de Restrições de Acoplamento
Abordagem 1 (dimensão 1000) Simplex Sequencial 2 Processadores 3 Processadores 4 Processadores
Gráfico 4.1: Tempos médios de execução obtidos nos testes da abordagem 1 (algoritmo paralelo x algoritmo
sequencial) para problema de dimensão 1000.
Número de Restrições de Acoplamento
50 70 100 Simplex Revisado 178.49 s 179.25 s 171.16 s Seqüencial 73.53 s 86.62 s 112.18 s 2 46.79 s 54.96 s 72.31 s 3 38.22 s 46.00 s 61.91 s N úm er o de Pr oce ss ad or es (D W ) 4 28.70 s 33.25 s 46.76 s
De acordo com os resultados mostrados na tabela 4.1, o algoritmo (seqüencial) que usa o princípio de decomposição consegue obter um ganho bastante significativo com relação ao Simplex Revisado quando aplicado ao problema com estrutura bloco-angular em questão. Podemos perceber que quanto menor o número de restrições de acoplamento, maior o ganho. No caso do problema com 50 restrições de acoplamento, o tempo de execução obtido pelo Simplex Revisado é aproximadamente 2.5 vezes maior do que o obtido pelo algoritmo de decomposição. Posteriormente poderemos verificar que isso ocorre também com o algoritmo paralelo, isto é, quanto menos restrições de acoplamento tivermos, maior será o ganho obtido com o paralelismo.
Ainda com relação aos resultados mostrados na tabela 4.1, não resta dúvida acerca da viabilidade de aplicação do paralelismo. Considerando que um problema de dimensão 1000 não é um problema muito grande, mesmo no caso em que foram usados somente 2 processadores (2 processos escravos em cada processador) e 100 restrições de acoplamento tivemos um speedup de 1.55, o que corresponde a 77.5 % de eficiência. Como vimos no capítulo anterior, o speedup ótimo, nesse caso, seria 2 e corresponderia a 100% de eficiência. Porém sabemos que os fatores externos (como tempo de comunicação) tornam esses parâmetros impossíveis de alcançar.
Já no caso em que foram usados 4 processadores (um processo escravo por processador) e 100 restrições de acoplamento, conseguimos um speedup próximo a 2.5, o que dá em torno de 60% de eficiência. Nesse caso, apesar de termos conseguido um tempo de execução bem inferior ao obtido com 2 processadores, a eficiência foi menor, o que significa dizer que a redução do tempo de execução não foi proporcional ao aumento do número de processadores.
Se observarmos os tempos obtidos quando usamos 50 restrições de acoplamento o fato se repete. Quando usamos 2 processadores obtivemos um speedup de 1.58 e 79% de eficiência, enquanto que com 4 processadores tivemos um speedup de 2.6 e 65% de eficiência. Essa redução de eficiência pode ter sido causada pelo tamanho dos subproblemas, os quais, por não serem muito grandes, talvez não justifiquem a adição de mais processadores aos 2 iniciais. Em outras palavras, o tempo de comunicação
adicionado ao tempo de execução total foi maior do que a redução de tempo obtida com a inclusão de mais paralelismo.
Para chegar a uma conclusão acerca da afirmação acima vamos investigar os resultados que foram obtidos nos testes com um problema maior. A tabela 4.2 mostra os tempos médios obtidos nos testes efetuados em problemas de dimensão 5000. Como podemos perceber, agora os tempos são bem maiores do que os obtidos com o problema de dimensão 1000. Assim como na tabela 1, os tempos estão sendo mostrados em função do número de restrições de acoplamento e do número de processadores utilizados.
Tabela 4.2: Tempos médios de execução obtidos nos testes da abordagem 1 (algoritmo paralelo x algoritmo
sequencial) para problema de dimensão 5000.
Número de Restrições de Acoplamento
250 350 500 Seqüencial 8556.34 s 10448.15 s 13787.08 s 2 4987.74 s 5957.81 s 8118.26 s 3 3808.24 s 4599.05 s 6433.94 s N úm er o de Pr oce ss ad or es (D W ) 4 2475.81 s 2987.06 s 4014.14 s
0 2000 4000 6000 8000 10000 12000 14000 Tempo (s) 250 350 500
Número de Restrições de Acoplamento
Abordagem 1 (dimensão 5000)
Sequencial 2 Processadores 3 Processadores 4 Processadores
Tabela 4.2: Tempos médios de execução obtidos nos testes da abordagem 1 (algoritmo paralelo x algoritmo
sequencial) para problema de dimensão 5000.
De acordo com a tabela 4.2, no caso que temos 500 restrições de acoplamento, quando usamos 2 processadores, obtivemos um speedup de 1.7 e 85.5% de eficiência, enquanto que quando usamos 4 processadores, alcançamos um speedup de 3.43 e 85.8% de eficiência. Obtivemos um aumento de eficiência quando adicionamos mais 2 processadores, além do tempo de execução ter ficado bem inferior ao do algoritmo seqüencial. Isso ocorreu porque os subproblemas eram grandes o bastante para requerer um grau mais alto de paralelismo, ou seja, um aumento do número de processadores. O mesmo fato se repete nos testes com 250 restrições de acoplamento. O speedup obtido usando 2 processadores é de 1.72, o que corresponde a 86% de eficiência, enquanto que, usando 4 processadores, obtivemos um speedup de 3.46 e 86.5%.
Podemos observar que, tanto na tabela 4.1 quanto na tabela 4.2, conseguimos obter maior eficiência (speedup) quando o problema possui menos restrições de acoplamento. Isso se justifica pelo fato de que quanto menor o número de restrições de acoplamento, maior será a quantidade de dados (restrições) que poderá ser processada em paralelo.
No Apêndice A mostraremos os tempos médios de execução (e os speedups) referentes aos testes de desempenho efetuados sobre problemas cuja matriz dos coeficientes possuem dimensão variando entre 1200 e 4500. As tabelas seguem o
mesmo padrão das apresentadas nessa seção (em função do número de restrições de acoplamentos e do número de processadores utilizados).