Openmp
- Parte 1 -
Sumário
Modelos de Memória Processos x Threads OpenMP
– – – – – – O que é OpenMP? Seção paralela de código Diretivas Construção de regiões paralelas Funções OpenMP Diretiva for
Modelos de Memória
Memória Compartilhada
Memória
Memória Memória Memória
Memória Distribuída
Rede de Interconexão
CPU
CPU
CPU
CPU
CPU
CPU
Todos os processadores tem acesso à memória compartilhada
Cada processador tem sua própria memória local
Modelos de Memória
Modelo híbrido
Rede de Interconexão
Memória CPU CPU
Memória
...
CPU CPU
SMP - symmetric multiprocessing
SMP - symmetric multiprocessing
Processos x Threads
Processos
– Espaço de endereçamento por processo – Bloco descritor
• • • • • • • • Id Estado Program counter (PC) Stack pointer (SP) Registradores Prioridade Dono Informações para gerência de memória • Arquivos abertos • ...
Threads
– Espaço de endereçamento compartilhado com o processo – Múltiplos threads compartilham o mesmo espaço de endereçamento – Bloco descritor
• • • • • • Id Estado Prioridade Program counter (PC) Stack pointer (SP) Compartilha código, dados e recursos do Sistema Operacional com o processo que a criou.
O que é OpenMP?
OpenMP
– Open Multi-Processing – Especificação aberta para multiprocessamento definida como um padrão pela indústria de hardware, software e academia.
Application Program Interface - API para programação paralela no modelo de memória compartilhada (shared memory) Diretivas do compilador
– Fortran – C/C++ – OpenMP implementado em Java: JOMP, JaMP
Plataformas: Linux/Unix e Windows Especificação OpenMP http://openmp.org/wp/
1997: versão 1.0 2005: versão 2.5 2008: versão 3.0
O que é OpenMP?
Maneira fácil de transformar um programa que usa um único processador em um programa capaz de utilizar multiprocessadores ou processadores com vários núcleos.
Programas OpenMP são adequados para execução em arquiteturas multi-core multithreading