OpenMP
Instituto de Ciências Exatas e
Tecnologia
Engenharia de Software
OPENMP
Componentes:
Andrews Amaral
Cleandro Rocha
Libni Neves
Manoel Figueiredo
Roteiro
1.
2.
3.
4.
5.
6.
7.
OpenMP
Histórico
Objetivo
Estrutura
Principais Componentes
Modelo de programação
Sincronização
2
OpenMP
Desenvolvido e mantido pelo grupo OpenMP ARB (Architeture
Review Board).
Consiste em uma API e um conjunto de diretivas que permite a criação de programas paralelos com compartilhamento de memória, através da criação automática e otimizada de um conjunto de threads.
Disponível nas linguagens Fortran, C/C++.
OpenMP não é uma linguagem de programação, é um padrão que define como os compiladores devem gerar códigos paralelos através de diretivas e funções.
3
Histórico
• No início dos anos 90, fabricantes de máquinas com memória compartilhada forneciam extensões para programação paralela em Fortran;
• As implementações permitiam ao usuário inserir diretivas para indicar onde loops deveriam ser paralelizados e os compiladores eram responsáveis pela paralelização; • Implementações funcionalmente parecidas, mas não portáveis e começaram a divergir;
4
Histórico
• A especificação padrão OpenMP começou em 1997 partindo do padrão X3H5
• Alguns parceiros na especificação:
• Compaq, HP, Intel, IBM, Silicon, Sun
• Absoft, GENIAS, Myrias, The Portland Group
• ANSYS, Dash, ILOG CPLEX, Livermore, NAG
• Liberação das APIs
• 1997 (Fortran 1.0)
• 1998 (C/C++)
• 2000 (2.0)
• 2008 (3.0)
5
Objetivo
• Uso de diretivas facilita o gerenciamento das threads.
• Decomposição dos dados é feita de maneira automática.
• Paralelismo pode ser implementado de maneira incremental, sem mudança drástica no código.
• Mesmo código pode ser usado para versão sequencial e paralela da aplicação.
6
Estrutura
7
Compilando
• Compilação: gcc –o .c –fopenmp
• Execução:
./
8
Principais