SlideShare uma empresa Scribd logo
1 de 25
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
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
Roteiro









Motivação
Objetivo
OpenMP
Contexto OpenMP
Ambiente de testes
Resultados
Apresentação prática
Conclusões
Adriano da Silva Ferreira
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
Objetivo

Utilizar-se da API OpenMP e ferramentas
associadas visando a otimização de
rendimento em códigos paralelizados.

Adriano da Silva Ferreira
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
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
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
OpenMP
• Abrangência do OpenMP:

Adriano da Silva Ferreira
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
Contexto OpenMP
 Mecanismo multithreading implementado pelo OpenMP:
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
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
Contexto OpenMP


Contexto de Hardware do OpenMP:

Adriano da Silva Ferreira
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
Contexto OpenMP


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

Adriano da Silva Ferreira
Ambiente de testes

• Arquitetura 64bits;
• Vantagens de se utilizar Sistema Operacional
Linux;

Bruno dos Santos Hecht
Ambiente de testes

• Compildor GCC;
• Ajustes e ferramentas de apoio;

Bruno dos Santos Hecht
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
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
Ambiente de testes
...
#pragma omp atomic
iteration++;
...

Bruno dos Santos Hecht
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
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
Apresentação prática

Bruno dos Santos Hecht
Conclusões
• Resultados satisfatórios;

• Aplicação abrangente;
• Abertura para trabalhos futuros.

Mais conteúdo relacionado

Mais procurados

Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowMauro Pichiliani
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualpichiliani
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Ismar Silveira
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoAdriano Teixeira de Souza
 
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)CriatividadeZeroDocs
 
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...Os Fantasmas !
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentaçãoJosé Meirelles
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoJosé Meirelles
 

Mais procurados (15)

Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtual
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
 
00011
0001100011
00011
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 1º PERÍODO ALGORITMOS E LÓG...
 
Introducao java
Introducao javaIntroducao java
Introducao java
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentação
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliação
 

Destaque

Python-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o CythonPython-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o CythonBruno Abinader
 
Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)Bruno Abinader
 
Linux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o CronLinux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o CronFrederico Madeira
 
Agenda tarefas
Agenda tarefasAgenda tarefas
Agenda tarefastarcisioti
 
Lab so-abertos-unidade14
Lab so-abertos-unidade14Lab so-abertos-unidade14
Lab so-abertos-unidade14Leandro Almeida
 
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...Dafmet Ufpel
 
MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013Arthur Francisco Lorenzon
 
(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processos(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processosAnderson Lago
 
Desenvolvendo Aplicações de Uso Geral para GPU com CUDA
Desenvolvendo Aplicações de Uso Geral para GPU com CUDADesenvolvendo Aplicações de Uso Geral para GPU com CUDA
Desenvolvendo Aplicações de Uso Geral para GPU com CUDAFilipo Mór
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à ShellscriptVinícius Hax
 
Desenvolvendo aplicações Mobile em Python
Desenvolvendo aplicações Mobile em PythonDesenvolvendo aplicações Mobile em Python
Desenvolvendo aplicações Mobile em PythonRelsi Maron
 

Destaque (20)

Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Python-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o CythonPython-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o Cython
 
OpenMP Day1
OpenMP Day1OpenMP Day1
OpenMP Day1
 
Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)
 
Aula CRONTAB
Aula CRONTABAula CRONTAB
Aula CRONTAB
 
M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
 
Linux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o CronLinux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o Cron
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Agenda tarefas
Agenda tarefasAgenda tarefas
Agenda tarefas
 
Lab so-abertos-unidade14
Lab so-abertos-unidade14Lab so-abertos-unidade14
Lab so-abertos-unidade14
 
OpenMP Day 2
OpenMP Day 2OpenMP Day 2
OpenMP Day 2
 
OpenMP Day 3
OpenMP Day 3OpenMP Day 3
OpenMP Day 3
 
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
 
CUDA/Open CL
CUDA/Open CLCUDA/Open CL
CUDA/Open CL
 
MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013
 
Grupo de Estudos de Softwares Livres
Grupo de Estudos de Softwares LivresGrupo de Estudos de Softwares Livres
Grupo de Estudos de Softwares Livres
 
(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processos(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processos
 
Desenvolvendo Aplicações de Uso Geral para GPU com CUDA
Desenvolvendo Aplicações de Uso Geral para GPU com CUDADesenvolvendo Aplicações de Uso Geral para GPU com CUDA
Desenvolvendo Aplicações de Uso Geral para GPU com CUDA
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Desenvolvendo aplicações Mobile em Python
Desenvolvendo aplicações Mobile em PythonDesenvolvendo aplicações Mobile em Python
Desenvolvendo aplicações Mobile em Python
 

Semelhante a OpenMP Paralelização Aplicações Matemáticas

Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionaisRobson Ferreira
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCEmbarcados
 
Apostila php
Apostila phpApostila php
Apostila phpfelgamer
 
Apostila básica de PHP
Apostila básica de PHPApostila básica de PHP
Apostila básica de PHPKratos879
 
Computação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem GeralComputação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem GeralIgor José F. Freitas
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonIP10
 
Criação de um Desktop GNU/Linux para uso em laboratórios de informática
Criação de um Desktop GNU/Linux para uso em laboratórios de informáticaCriação de um Desktop GNU/Linux para uso em laboratórios de informática
Criação de um Desktop GNU/Linux para uso em laboratórios de informáticaVerdanatech Soluções em TI
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilResearch Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilHeron Carvalho
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Bruxarias em Python - Como desenvolver soluções escaláveis
Bruxarias em Python - Como desenvolver soluções escaláveisBruxarias em Python - Como desenvolver soluções escaláveis
Bruxarias em Python - Como desenvolver soluções escaláveisViotti Equipamentos Médicos
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptBrennoPimenta
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Introdução à Computação Aplicada
Introdução à Computação AplicadaIntrodução à Computação Aplicada
Introdução à Computação AplicadaRodolfo Almeida
 
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013Arthur Francisco Lorenzon
 

Semelhante a OpenMP Paralelização Aplicações Matemáticas (20)

Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionais
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoC
 
Academia do programador
Academia do programadorAcademia do programador
Academia do programador
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila básica de PHP
Apostila básica de PHPApostila básica de PHP
Apostila básica de PHP
 
Computação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem GeralComputação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem Geral
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do Python
 
Criação de um Desktop GNU/Linux para uso em laboratórios de informática
Criação de um Desktop GNU/Linux para uso em laboratórios de informáticaCriação de um Desktop GNU/Linux para uso em laboratórios de informática
Criação de um Desktop GNU/Linux para uso em laboratórios de informática
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilResearch Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Bruxarias em Python - Como desenvolver soluções escaláveis
Bruxarias em Python - Como desenvolver soluções escaláveisBruxarias em Python - Como desenvolver soluções escaláveis
Bruxarias em Python - Como desenvolver soluções escaláveis
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.ppt
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Introdução à Computação Aplicada
Introdução à Computação AplicadaIntrodução à Computação Aplicada
Introdução à Computação Aplicada
 
Aula 1 pc - slides
Aula 1   pc - slidesAula 1   pc - slides
Aula 1 pc - slides
 
Progeto pim ii
Progeto pim iiProgeto pim ii
Progeto pim ii
 
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
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
  • 3. Roteiro         Motivação Objetivo OpenMP Contexto OpenMP Ambiente de testes Resultados Apresentação prática Conclusões Adriano da Silva Ferreira
  • 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
  • 9. OpenMP • Abrangência do OpenMP: 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
  • 11. Contexto OpenMP  Mecanismo multithreading implementado pelo OpenMP:
  • 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
  • 14. Contexto OpenMP  Contexto de Hardware do OpenMP: Adriano da Silva Ferreira
  • 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. Contexto OpenMP  Arquitetura SMP – Processadores Simétricos / Dual Core Genérico: 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
  • 21. Ambiente de testes ... #pragma omp atomic iteration++; ... Bruno dos Santos Hecht
  • 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. 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
  • 25. Conclusões • Resultados satisfatórios; • Aplicação abrangente; • Abertura para trabalhos futuros.