Sunteți pe pagina 1din 24

Avaliação da Eficiência da Paralelização com Sections OpenMP

em um Algoritmo Genético através


de Rastros de Execução

Gabriella Lopes Andrade


Márcia Cristina Cera

1
Sumário
• Introdução
• Problema Alvo
• Problema do Roteamento de Veículos
• Algoritmo Genético
• Algoritmo Genético Paralelo
• Ambiente de Execução
• Análise do Resultados
• Conclusão
• Referências

2
Introdução
• O rastreamento de execução permite identificar o impacto do uso de diretivas
no desenvolvimento de aplicações paralelas
• O foco deste trabalho é a diretiva sections do OpenMP, usada na
paralelização de um Algoritmo Genético aplicado ao Problema de Roteamento
de Veículos

3
Problema do Roteamento de Veículos
• Sua solução é um conjunto de rotas capazes de satisfazer a demanda de todas
as cidades e cujo somatório seja mínimo

4
Algoritmo Genético

5
Algoritmo Genético Paralelo
• Gressler e Cera (2014) identificaram duas regiões de maior processamento
(perfil de execução – gprof)

6
Algoritmo Genético Paralelo
• 1ª Região: Dois blocos de código que realizam a perpetuação dos indivíduos

#pragma omp parallel sections

7
Algoritmo Genético Paralelo
• 2ª Região: Laço for que controla a geração de uma nova população (seleções,
cruzamentos, mutações e avaliações)

#pragma omp parallel for

8
Ambiente de Execução
• Scherm Workstation do LEA da Unipampa - Campus Alegrete

9
Ambiente de Execução
• Quatro instâncias do Benchmark de Christofides et al. (1979), com restrição da
capacidade: c50, c100, c120 e c150
• Executamos com 1, 2, 3, 4, 5 e 6 threads
• Rastreamento:
• Coleta dos rastros: Score-P versão 2.0.2
• Visualização: Vampir versão demo 9

10
Ambiente de Execução
• Baseando-se em Gressler e Cera (2014), usou-se:
• Tamanho da População: N x 10, onde N é o número total de cidades;
• Número de Evoluções: N x N x 10 evoluções;
• Técnica de Cruzamento: Cruzamento de 1 ponto;
• Probabilidade de Mutação: 20%;
• Taxa de Mutação: entre 4 a 10 % dos genes dos cromossomos;
• Técnica de Mutação: Randômica. Sorteia qual técnica utilizar entre troca, troca bloco,
inversão e inserção.

11
Análise dos Resultados
• Tempo de espera em sincronização:
• Tempo que uma thread que já terminou sua computação espera até que todas as
demais também terminem
• Aumenta conforme se aumenta o número de threads (Andrade e Cera (2016b))

Fonte: Adaptada de Chapman, Jost e Pas (2008, p. 24)

12
Análise dos Resultados
• Tempo de espera em sincronização:
• Tempo que uma thread que já terminou sua computação espera até que todas as
demais também terminem
• Aumenta conforme se aumenta o número de threads (Andrade e Cera (2016b))

até 3x maior
de 2 para 6 threads

Fonte: Adaptada de Chapman, Jost e Pas (2008, p. 24)

13
Análise dos Resultados
• 6 threads:
• Apenas 2 executam as sections
• 4 threads ficam ociosas

14
Análise dos Resultados
• 6 threads:
• Apenas 2 executam as sections Sem sections
• 4 threads ficam ociosas até 2x menor

15
Speedup
Com Sections Sem Sections Maior desempenho: 6 threads
4,0 3,66
Speedups Máximos Atingidos

3,26 3,41
3,5
3,42
3,0 3,18 3,24
2,5 2,41
2,37
2,0

1,5

1,0

0,5

0,0
c50 c100 c120 c150
Instâncias do PRV

16
Speedup
Com Sections Sem Sections Maior desempenho: 6 threads
4,0 3,66
Speedups Máximos Atingidos

3,26 3,41
3,5
3,42
3,0

2,5 2,41
3,18 3,24
1,68%
2,37
2,0

1,5

1,0

0,5

0,0
c50 c100 c120 c150
Instâncias do PRV

17
Speedup
Com Sections Sem Sections Maior desempenho: 6 threads
4,0 3,66
Speedups Máximos Atingidos

3,26 3,41
3,5
3,42
3,0

2,5 2,41
3,18 3,24
2,52 à 7%
2,37
2,0

1,5

1,0

0,5

0,0
c50 c100 c120 c150
Instâncias do PRV

18
Eficiência
Com Sections Sem Sections
0,7
0,61
0,6 0,57
0,54
0,5 0,57
0,53 0,54
0,40
Eficiência

0,4
0,39
0,3

0,2

0,1

0,0
c50 c100 c120 c150
Instâncias do PRV

19
Eficiência
Com Sections Sem Sections
0,7
0,61
0,6 0,57
0,54
0,5
0,40
0,53 0,54
0,57
2,56%
Eficiência

0,4
0,39
0,3

0,2

0,1

0,0
c50 c100 c120 c150
Instâncias do PRV

20
Eficiência
Com Sections Sem Sections
0,7
0,61
0,6 0,57
0,54
0,5
0,40
0,53 0,54
0,57
1,89 à 7%
Eficiência

0,4
0,39
0,3

0,2

0,1

0,0
c50 c100 c120 c150
Instâncias do PRV

21
Conclusão
• A paralelização com sections leva a um aumento do tempo de espera em
sincronização de até e 7%.
• O uso de sections consegue melhorar o desempenho da aplicação em até
7%.
• Embora haja um aumento no tempo de sincronização, este aumento tem um
impacto menor no desempenho final da aplicação do que a execução sequencial
das regiões paralelizadas com sections.
• Trabalhos Futuros:
• Avaliar o impacto do uso de usar tasks ao invés de sections

22
Referências
• Andrade, G. L. and Cera, M. C. (2016a). Avaliando a paralelização de um algoritmo genético com OpenMP.
In Anais do WSCAD-WIC 2016, pages 68–73. SBC, Aracaju, SE.
• Andrade, G. L. and Cera, M. C. (2016b). Avaliando o uso de sections OpenMP na paralelização de um
algoritmo genético. In Anais do SIEPE. UNIPAMPA, Uruguaiana, RS.
• Chapman, B., Jost, G., and Van DeR Pas, R. (2008). Using OpenMP: portable shared memory parallel
programming. MIT Press, Cambridge, MA, USA.
• Christofides, N., Mingozzi, A., Toth, P., and Sandi, C. (1979). Combinatorial Optimization. John Wiley &
Sons, Chichester, UK.
• Gressler, H. d. O. and Cera, M. C. (2014). O impacto da paralelização com OpenMP no desempenho e na
qualidade das soluções de um algoritmo genético. Revista Brasileira de Computação Aplicada, pages 35–
47.
• Linden, R. (2008). Algoritmos genéticos: uma importante ferramenta da inteligência computacional.
Brasport, Rio de Janeiro, RJ, 2a edition.
• Rego, C. and Alidaee, B. (2006). Metaheuristic Optimization via Memory and Evolution: Tabu Search and
Scatter Search. Operations Research/Computer Science Interfaces Series. Springer, USA.
• Schnorr, L. M. (2014). Analise de desempenho de programas paralelos. In Anais da ERAD/RS 2014, pages
57–81. SBC, Alegrete, RS.

23
Obrigada!
Gabriella Lopes Andrade – gabie.lop.s@gmail.com

24

S-ar putea să vă placă și