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
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
OpenMP Paralelização Aplicações Matemáticas
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. 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
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. Objetivo
Utilizar-se da API OpenMP e ferramentas
associadas visando a otimização de
rendimento em códigos paralelizados.
Adriano da Silva Ferreira
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. 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. 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
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
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. 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
17. Ambiente de testes
• Arquitetura 64bits;
• Vantagens de se utilizar Sistema Operacional
Linux;
Bruno dos Santos Hecht
18. Ambiente de testes
• Compildor GCC;
• Ajustes e ferramentas de apoio;
Bruno dos Santos Hecht
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. 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