25
Utilização da Biblioteca OpenMP para a Paralelização de Aplicações Matemáticas Universidade Estadual de Campinas, Julho de 2009 Faculdade de Tecnologia Trabalho de Graduação Interdisciplinar

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

  • Upload
    bshecht

  • View
    77

  • Download
    5

Embed Size (px)

Citation preview

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

Utilização da Biblioteca OpenMP para aParalelização de Aplicações Matemáticas

Universidade Estadual de Campinas, Julho de 2009

Faculdade de Tecnologia

Trabalho de Graduação Interdisciplinar

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

Universidade Estadual de Campinas, Julho de 2009

Alunos:Adriano da Silva FerreiraBruno dos Santos Hecht

Orientadora:Profª. Dra. Marli de Freitas Gomes Hernandez

Co-orientador:M.Sc. Igor José Ferreira de Freitas

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

Roteiro

Motivação

Objetivo

OpenMP

Contexto OpenMP

Ambiente de testes

Resultados

Apresentação prática

Conclusões

Adriano da Silva Ferreira

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

Motivação

Investigar ganhos em desempenho computacional através da paralelização de aplicações e utilização eficiente dos recursos de multi-

processamento.

Adriano da Silva Ferreira

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

Objetivo

Utilizar-se da API OpenMP e ferramentas associadas visando a otimização de

rendimento em códigos paralelizados.

Adriano da Silva Ferreira

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

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

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

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

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

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

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

OpenMP

• Abrangência do OpenMP:

Adriano da Silva Ferreira

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

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

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

Contexto OpenMP

Mecanismo multithreading implementado pelo OpenMP:

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

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

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

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

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

Contexto OpenMP

Contexto de Hardware do OpenMP:

Adriano da Silva Ferreira

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

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

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

Contexto OpenMP

Arquitetura SMP – Processadores Simétricos / Dual Core Genérico:

Adriano da Silva Ferreira

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

Ambiente de testes

• Arquitetura 64bits;

• Vantagens de se utilizar Sistema Operacional Linux;

Bruno dos Santos Hecht

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

Ambiente de testes

• Compildor GCC;

• Ajustes e ferramentas de apoio;

Bruno dos Santos Hecht

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

...#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];}

...

Ambiente de testes

Bruno dos Santos Hecht

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

...#pragma omp parallel for shared(MATRIX_DIM, a, x, /

last_iteration, b) private(i, j) reduction(+:sigma1)

for (i = 0; i < MATRIX_DIM; i++){

...

Ambiente de testes

Bruno dos Santos Hecht

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

...

#pragma omp atomic

iteration++;

...

Ambiente de testes

Bruno dos Santos Hecht

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

Resultados

Bruno dos Santos Hecht

6.43

175.4

155.94

3.66

116.54

146.9

0

20

40

60

80

100

120

140

160

180

200

Transformação Linear Matriz Jacobi e Gauss-Seidel

Comparativo de desempenho(arquitetura 1)

Sequencial

Paralelotem

po

(s)

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

Resultados

5.73

158.6

140.04

3.55

124.5131.44

0

20

40

60

80

100

120

140

160

180

Transformação Linear Matriz Jacobi e Gauss-Seidel

Comparativo de desempenho(arquitetura 2)

Sequencial

Paralelo

Bruno dos Santos Hecht

tem

po

(s)

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

Apresentação prática

Bruno dos Santos Hecht

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

Conclusões

• Resultados satisfatórios;

• Aplicação abrangente;

• Abertura para trabalhos futuros.