Padrão MPI –
Message Passing Interface
Marcos da Costa Barros – RA 820650
Nov, 2012
MO_601
Outline
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Passagem de Mensagem
Histórico Padrão MPI
Uso do Padrão MPI
Estrutura Programa MPI
Group, Communicator e Rank
Comunicação Ponto a Ponto
Comunicação Coletiva
Tipos de Dados Derivados
Topologias Virtuais
MPI-2 / MPI-3
Passagem de Mensagem

Modelo de programação por
passagem de mensagem
 Necessário suporte de
uma biblioteca
 Necessidade de
padronização da
interface
 Necessidade de executar
em diferentes
plataformas de hardware
MultiProgramação
Memória
Compartilhada
Passagem
De Mensagem
Dados
Paralelos
MPI
Compilador
ou
Biblioteca
Sistema
Operacional
Passagem de Mensagem

Modelo de programação por
passagem de mensagem
 Dados privados
 Sincronização explícita
 Nomeação dos processos
 Controle de coerência e
compartilhamento de
dados controlados pelo
programador
Match
Receb Y, P, t
Ender.X
Envia X, Q, t
Ender Y
Memoria
Local
PROCESSO P
Memoria
Local
PROCESSO Q
Histórico Padrão MPI







1980-1990 Desenvolvimento de inúmeros sistemas
de computação paralela – necessidade de
padronização
1992 Congresso em Virginia-USA - Centro de
Pesquisa em Computação Paralela de Williamsburg –
requisitos essenciais para passagem de mensagem
Criação do MPI Fórum
1994 Publicação da primeira revisão do padrão MPI
1996 Publicação da revisão do padrão MPI-2
2012 Publicação do ultima revisão padrão MPI-3
Não é um padrão ISO ou IEEE
Uso Padrão MPI





Define interface de rotinas de biblioteca que
suportam comunicação por passagem de mensagem
Implementações variam de plataforma para
plataforma
Pode ser utilizado em plataformas de hardware de
memória distribuída, memória compartilhada ou
sistemas híbridos
Desenvolvido para linguagens C e Fortran na versão
MPI-1 e C++ e Fortran90 na versão MPI-2
Bibliotecas disponíveis – Linux : MVAPICH MPI e
OPEN MPI – IBM BlueGene – IBM MPI
Estrutura Programa MPI
Inclusão arquivo MPI
Declarações, protótipos, etc
Início do Programa
.
Código Serial
.
.
Alocação de Processos
Inicialização do ambiente MPI
Início código paralelo
.
.
.
Criação Grupos de Processos
Comunicação Ponto a Ponto
Comunicação Coletiva
Finalização de Processos
Execução e Troca de Mensagens
.
.
.
Finalização do ambiente MPI
.
.
.
Código Serial
Fim do Programa
Fim código paralelo
Groups, Communicator e Rank
MPI_COMM_WORLD
2
8
6

Group – conjunto de
0

5
9
Communicator – objeto
associado ao grupo
Rank – número único
de identificação de cada
processo
7
1
processos

4
3
0
8
1
9
2
6
5
GROUP_1
3
7
4
GROUP_2
8
0
1
9
3
2
6
5
COMM_1
4
7
COMM_2
Comunicação Ponto a Ponto

Conceitos




Buffering
Synchronous x Asynchronous
Blocking x Non-Blocking
Tipos de comunicação






Synchronous Send
Blocking send / Blocking
receive
Non-blocking send / Non
blocking receive
Buffered send
Combined send/receive
Ready send
PROCESSADOR 1
PROCESSADOR 2
PROCESS A
PROCESS B
Aplicaçao
dado
ENVIA
buffer sistema
REDE
Aplicaçao
RECEBE dado
buffer sistema
dado
Comunicação Ponto a Ponto

Argumentos









buffer
data count
data type
destination
source
tag
communicator
status
request
Comunicação Coletiva



Synchronization
 barriers
Data movement
 broadcast
 scatter
 gather
Collective
computation

scatter
broadcast
1
3
5
16
reduction
gather
reduction
soma
7
Tipos de Dados Derivados

Conceitos




contiguous: permite redefinir o tipo de dados de
uma região contínua do espaço de memória
para um novo tipo de dados MPI.
-vector: permite redefinir o tipo de dados de
blocos de dados de mesmo tamanho e
espaçados pela mesma distância
-indexed: permite redefinir o tipo de dados de
blocos de dados de tamanho diferentes e
espaçados por diferentes distâncias.
-struct: é a estrutura mais geral de tipos de
dados que permite a definição de blocos
constituídos de diferentes tipos de dados e
espaçados por diferentes distâncias
Topologias Virtuais




associação linear
organizados em padrões topológicos,
como por exemplo, grades de duas
ou três dimensões ou mais
genericamente, grafos
o mapeamento e ordenação de
processos num formato geométrico,
porém, sem necessariamente ter uma
correlação com a topologia de
conexão física dos processadores
paralelos
Cartesiano e Grafo
Padrão MPI-2 / MPI-3


MPI-2
 processos dinâmicos
 comunicação unilateral
 operações de comunicação coletiva estendidas
 interface externa
 suporte a novas linguagens
 I/O paralelo
MPI-3
 suporte para comunicações coletivas non-
blocking


funções adicionais para comunicações
unidirecionais
suporte para Fortran 2008
Download

MO601_MPI_Marcos_da_Costa Barros_RA_820650