140 likes | 227 Views
Padrão MPI – Message Passing Interface. Marcos da Costa Barros – RA 820650 Nov, 2012 MO_601. Outline. 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
E N D
Padrão MPI – Message Passing Interface Marcos da Costa Barros – RA 820650 Nov, 2012 MO_601
Outline • 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
Multi- Programaçã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 • Necessário suporte de uma biblioteca • Necessidade de padronização da interface • Necessidade de executar em diferentes plataformas de hardware
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 Início código paralelo Alocação de Processos Inicialização do ambiente MPI . . . Criação Grupos de Processos Execução e Troca de Mensagens Comunicação Ponto a Ponto Comunicação Coletiva . . . Fim código paralelo Finalização do ambiente MPI Finalização de Processos . . . Código Serial Fim do Programa
Groups, Communicator e Rank MPI_COMM_WORLD • Group – conjunto de processos • Communicator – objeto associado ao grupo • Rank – número único de identificação de cada processo 2 8 6 0 4 3 7 1 5 9 0 8 1 9 2 3 6 4 5 7 GROUP_1 GROUP_2 8 0 1 9 3 4 2 6 7 5 COMM_2 COMM_1
PROCESSADOR 1 PROCESSADOR 2 PROCESS A PROCESS B Aplicaçao ENVIA Aplicaçao RECEBE REDE dado dado buffer sistema buffer sistema dado 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 blockingreceive • Buffered send • Combined send/receive • Ready send
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 • reduction scatter broadcast 1 3 5 7 16 reduction soma gather
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