Computação paralela utilizando OpenMP para aplicações matemáticos

292 views

Published on

Apresentação final do Trabalho de Conclusão de Curso focado em Computação Paralela por memória compartilhada utilizando a bliblioteca OpenMP para paralelização de aplicações matemáticas

Published in: Technology
  • Be the first to comment

Computação paralela utilizando OpenMP para aplicações matemáticos

  1. 1. Faculdade de Tecnologia Trabalho de Graduação Interdisciplinar Utilização da Biblioteca OpenMP para a Paralelização de Aplicações Matemáticas Universidade Estadual de Campinas, Julho de 2009
  2. 2. Alunos: Adriano da Silva Ferreira Bruno dos Santos Hecht Orientadora: Profª. Dra. Marli de Freitas Gomes Hernandez Co-orientador: M.Sc. Igor José Ferreira de Freitas Universidade Estadual de Campinas, Julho de 2009
  3. 3. Roteiro         Motivação Objetivo OpenMP Contexto OpenMP Ambiente de testes Resultados Apresentação prática Conclusões Adriano da Silva Ferreira
  4. 4. Motivação Investigar ganhos em desempenho computacional através da paralelização de aplicações e utilização eficiente dos recursos de multiprocessamento. Adriano da Silva Ferreira
  5. 5. Objetivo Utilizar-se da API OpenMP e ferramentas associadas visando a otimização de rendimento em códigos paralelizados. Adriano da Silva Ferreira
  6. 6. OpenMP  O que é a API OpenMP  Interface para desenvolvimento de aplicaçãoes paralelizadas em ambientes multithreading e de memória compartilhada;  Versão Atual do OpenMP: 3.0;  O OpenMP está contido em uma das abordagens do Paralelismo Computacional; Adriano da Silva Ferreira
  7. 7. OpenMP  Funcionamento da interface :  Aplicabilidade para as Linguagens C/C++ e Fortran;  Baseado em diretivas de compilação (compilador OpenMP);  Sintaxe para o C/C++: #pragma omp nome da diretiva [cláusula[[,] cláusula]...] / nova linha Adriano da Silva Ferreira
  8. 8. OpenMP  Extensão à linguagem de programação;  Delimita uma região paralelizável: #pragma omp parallel for default(none) private(i) for (int i = 0; i <= tamanho_vetor; i++) // início da região { vetor[i] = i + vetor[i * i]; } // fim da região Adriano da Silva Ferreira
  9. 9. OpenMP • Abrangência do OpenMP: Adriano da Silva Ferreira
  10. 10. Contexto OpenMP • Sistema MultiThreading;  Threads: entidade capaz de executar independentemente um fluxo de dados de uma instrução;  Sistema Multithreading remete à muitas threads; Adriano da Silva Ferreira
  11. 11. Contexto OpenMP  Mecanismo multithreading implementado pelo OpenMP:
  12. 12. Contexto OpenMP  Mecanismo multithreading implementado pelo OpenMP:  O trabalho será divido entre as Threads;  Sincronização entre Threads:  Dados compartilhados  Dados privados  Geração do montante de trabalho final; Adriano da Silva Ferreira
  13. 13. Contexto OpenMP  Contexto de Hardware do OpenMP;  Taxonomia de Flynn;  Arquitetura MIMD (Multiple Instrucition, Multiple Data);  Clusters, NUMA, SMP: especificações da arquitetura; Adriano da Silva Ferreira
  14. 14. Contexto OpenMP  Contexto de Hardware do OpenMP: Adriano da Silva Ferreira
  15. 15. Contexto OpenMP  Arquitetura SMP – Processadores Simétricos     Processadores com mesma distância à memória; Idênticos na arquitetura; Cache privada (dados privados); TLB em sistemas de memória virtual; Adriano da Silva Ferreira
  16. 16. Contexto OpenMP  Arquitetura SMP – Processadores Simétricos / Dual Core Genérico: Adriano da Silva Ferreira
  17. 17. Ambiente de testes • Arquitetura 64bits; • Vantagens de se utilizar Sistema Operacional Linux; Bruno dos Santos Hecht
  18. 18. Ambiente de testes • Compildor GCC; • Ajustes e ferramentas de apoio; Bruno dos Santos Hecht
  19. 19. Ambiente de testes ... #pragma omp shared for for (K=1; K<N; K++) { for (I=K+1; I<=N; I++) { #pragma omp critical(B) B[I] -= A[I][K] / A[K][K] * B[K]; for (J=K+1; J<=N; J++) #pragma omp critical(A) A[I][J] -= A[I][K] / A[K][K] * A[K][J]; } ... Bruno dos Santos Hecht
  20. 20. Ambiente de testes ... #pragma omp parallel for shared(MATRIX_DIM, a, x, / last_iteration, b) private(i, j) reduction(+:sigma1) for (i = 0; i < MATRIX_DIM; i++) { ... Bruno dos Santos Hecht
  21. 21. Ambiente de testes ... #pragma omp atomic iteration++; ... Bruno dos Santos Hecht
  22. 22. Resultados Comparativo de desempenho (arquitetura 1) 200 180 175.4 160 155.94 tempo (s) 140 146.9 120 116.54 Sequencial 100 Paralelo 80 60 40 20 6.43 3.66 0 Transformação Linear Matriz Bruno dos Santos Hecht Jacobi e Gauss-Seidel
  23. 23. Resultados Comparativo de desempenho (arquitetura 2) 180 160 158.6 140 tempo (s) 140.04 131.44 120 124.5 100 Sequencial 80 Paralelo 60 40 20 5.73 3.55 0 Transformação Linear Matriz Bruno dos Santos Hecht Jacobi e Gauss-Seidel
  24. 24. Apresentação prática Bruno dos Santos Hecht
  25. 25. Conclusões • Resultados satisfatórios; • Aplicação abrangente; • Abertura para trabalhos futuros.

×