MPI - Message Passing Interface Mestrado em Matemática Computacional 2003.

Slides:



Advertisements
Apresentações semelhantes
Interações cliente/servidor usando o UDP
Advertisements

SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Laboratório de Programação
Estratégias de Particionamento e Divisão e Conquista
OpenMP.
Programação II Estruturas de Dados
MPI – Comunicações Com. Colectiva esquecida Barrier não há troca de dados, apenas sincroniza os processos int MPI_Barrier( MPI_Comm, comm) T com = T lat.
MPI - Introdução Message-Passing Model Task: código + memória (uma ou várias tasks no mesmo processador) Mensagem: as tasks comunicação entre si trocando.
Programação para Engenharia I
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Padrão MPI – Message Passing Interface
Message Passing Interface (MPI)
Técnicas de processamento paralelo
INTRODUÇÃO À PROGRAMAÇÃO
Introdução Linguagem C
YACC.
Universidade Federal do Espírito Santo
Sincronização de Processos (5)
Sincronização de Processos (6) - Troca de Mensagens -
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
JAVA: Conceitos Iniciais
Revisão /*======================================================*/
Aula 2 - Conceitos Preliminares para Programar em C
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 27 (1) Programação com MPI Tópicos: Modelo de Programação Funções de Ambiente Funções Básicas.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 29 (1) Comunicação Coletiva em MPI Tópicos: Operação de Broadcast Operações de Redução Exemplo:
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 32 (1) Entrada/Saída em MPI Tópicos: Operações de E/S Sincronização de Processadores Referência:
CADEIA DE CARACTERES (Strings)
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 35 (1) Comunicação Avançada em MPI Tópicos: Exemplo: Difusão de Dados em Anel Armazenamento.
Algoritmos - Propriedades Desejáveis (1)
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 26 (1) Troca de Mensagens Troca de Mensagens Tópicos: Características de Mensagens Implementação.
Comunicação entre processos: Mensagens Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.
Comunicação entre Processos - Sockets. Conceitos Básicos Sockets são uma forma de IPC ( InterProcess Communication ) fornecida pela 4.3 BSD que fornecem.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Paradigmas de Linguagens de Programação Aula 2
CSP-Z Disciplina: Especificação de Sistemas Distribuídos Mestrado em Ciências da Computação Aleciano Jr. Leonilson Barbosa
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Uso de parâmetros na linha de comando. Parâmetros da função main:
Algumas notas sobre a linguagem de programação C
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Troca de Mensagens Programação concorrente
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
Métodos de Computação Paralela em Álgebra Linear
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo I Comandos Simples e Repetições.
MPI – Message Passing Interface Algumas Funções. Funções básicas As 6 funções que permitem escrever muitos dos programas: MPI_Init -- inicia a computação.
Fundamentos de linguagens de programação
Linguagem C.
Engenharia de Sistemas Embarcados Aula 9: Salvo RTOS.
Linguaguem de Programação II
Sistemas Operacionais IV – Gerenciamento de E/S
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Jorge Zavaleta PVM vs MPI. Introdução Objetivos do MPI Implementações e definições processos dinâmicos Contextos Operações não bloqueantes Portabilidade,heterogeneidade.
Linguagem de Programação
Troca de Mensagens Síncronas n Consequências do uso de comunicação assíncrona:  Um processo pode se adiantar muito em relação aos outros. Para sincronizar.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
1 Middleware Marcellus Tavares. 2 Roteiro Sistemas distribuídos Motivação Middleware  MPI  RMI Referências.
Tipo Abstrato de Dados (TAD) Estrutura de Dados Professor: Rodrigo Alves Sarmento Professor: André Cypriano.
Estrutura de Dados Prof. André Cypriano M. Costa
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Fundamentos de Programação 1
Bruna Cavallero Martins Universidade Católica de Pelotas.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Airam J. Preto , Celso L. Mendes
Transcrição da apresentação:

MPI - Message Passing Interface Mestrado em Matemática Computacional 2003

MPI - Message Passing Interface   MPI – The Complete Reference 2nd Edition Volume 1 –, by Marc Snir, Steve Otto, Steven Huss-Lederman, Davis Walker and JackDongarra, The MIT Press.  Designing and Building Parallel Programs, I. Foster. Addison-Wesley, 1995  Parallel Programming With MPI, by Peter S. Pacheco, published by Morgan Kaufmann. Morgan Kaufmann

MPI - Message Passing Interface  MPI surgiu de um Forum realizado em Abril de 1992  Envolveu cerca de 80 pessoas, provenientes de 40 organizações, principalmente americanas e européias,  Envolveu a maioria dos principais fabricantes de computadores paralelos para além de universidades e laboratórios ligados ao governo americano

MPI - Message Passing Interface  O MPI é uma tentativa de padronização, independente da plataforma paralela, para ambientes de programação via troca de mensagens.  Surgiu da necessidade de se resolver alguns problemas relacionados às plataformas de portabilidade, como por exemplo: restrições em relação à real portabilidade de programas, devido as grande número de plataformas, o mau aproveitamento de características de algumas arquiteturas paralelas.

MPI - Message Passing Interface  Os programas em MPI consistem: em statements convencionais de C e directivas entre processos MPI não é uma nova linguagem  MPI é uma biblioteca de definições e funções, que podem ser usadas em programas escritos na linguagem C A compreensão do MPI passa pelo conhecimento de um conjunto de definições e funções especiais. MPI é apenas uma especificação sintática e semântica de rotinas constituintes da biblioteca de comunicação

MPI - Message Passing Interface  O mecanismo de comunicação subjacente é a transmissão de dados entre um par de processos (message passing): um processo envia um outro processo recebe Comunicação point-to-point O mecanismo de comunicação providência um conjunto de funções send e receive que permite a comunicação de tipos de dados associados a uma tag (etiqueta: permite selectividade no receber das mensagens)

MPI - Message Passing Interface  Os nomes de todas as entidades MPI (rotinas, constantes, tipos, etc.) começam por MPI_.  As funções têm uma designação mista: MPI_Xxxxx(parameter,... ) Exemplo: MPI_Init(&argc, &argv).  As constantes MPI em C (e em Fortran) são em maiuscúlas Exemplo: MPI_COMM_WORLD ( define o início da comunicação para todo os processos que participam na computação) MPI_REAL,... Em C, os tipos especiais correspondem a entidades MPI. Os nomes dos tipos seguem as funções de C, por exemplo: MPI_Comm é o tipo correspondente de um MPI "communicator".

MPI - Message Passing Interface  Todos os programas em MPI têm a estrutura seguinte : include MPI header file  variable declarations  initialize the MPI environment ...do computation and  MPI communication calls...  close MPI communications em C #include MPI_Init(&argc, &argv). MPI_Finalize(&argc, &argv) mpi.h contém definições e declarações necessárias para compilar programas MPI

MPI - Message Passing Interface MPI é muito simples e pequeno! São 6 as funções que permitem escrever muitos dos programas:  MPI_Init -- inicia a computação  MPI_Finalize -- finaliza a computação  MPI_Comm_size -- determina o número de processos  MPI_Comm_rank -- identifica o processo  MPI_Send -- envia uma mensagem  MPI_Recv -- recebe uma mensagem

MPI - Message Passing Interface MPI é extenso! MPI contém 128 funções. O sistema de passagem de mensagens é executado pelos seguintes comandos MPI:  MPI_Send - envio de uma mensagem por um processador MPI_Send(start, count, datatype, dest, tag, comm)  MPI_Recv - recebe uma mensagem de um processador MPI_Recv(start, count, datatype, source, tag, comm, status)

MPI - Message Passing Interface  MPI_Send(start, count, datatype, dest, tag, comm) start -- void* (conteúdo da mensagem) count -- int (determina o espaço necessário para guardar a mensagem datatype -- MPI_Datatype (indica o tipo de dados da mensagem) dest (source) -- int (indica o nº do processo que recebe (envia) ) tag -- int (uma etiqueta para quem recebe o quê) comm -- MPI_Comm (indica a comunicação MPI_COMM_WORLD)  MPI_Recv(start, count, datatype, source, tag, comm, status) status -- MPI_Status (fornece informação sobre os dados enviados e seu tamanho; por exemplo MPI_ANY_SOURCE refere o nº do processo que envia a mensagem )

MPI - Message Passing Interface Barrier - Sincroniza todos os processos Broadcast – Envia dados de um processo para todos os outros Gather – Recebe dados de todos os processos para um. Scatter - Distribui dados de um processo para todos os outros. Reduction operations –Combina dados (somas, multiplicações, lógicos, etc.) enviando para um processo. MPI_ BARRIER MPI_ BCAST MPI_GATHER MPI_SCATTER MPI_REDUCE (MPI_MAX ; MPI_SUM ; MPI_PROD ; … MPI_LAND ; …) MPI contém um conjunto de funções de comunicação colectivas que executam operações de comunicação

MPI - Message Passing Interface Passagem de mensagens – sincronismo e bloqueio  A comunicação diz-se sincrona se os processos esperam uns pelos outros, garantindo qu estão simultaneamente envolvidos na operação.  A comunicação diz-se assíncrona se os processos não estão simultaneamente envolvidos na operação.  A comunicação diz-se bloqueante se o processo espera que alguma fase da comunicação esteja completa.  A comunicação diz-se não bloqueante se o processo não pára à espera que alguma fase da comunicação esteja completa.

MPI - Programa MPI C (lab1) #include int main(int argc, char **argv) { MPI_Init(&argc, &argv); printf("Hello world! I am %d of %d\n", rank, size); MPI_Finalize(); return 0; }

MPI - Message Passing Interface  Duas das primeiras questões em programas paralelos são: Quantos processos existem? Quem sou eu? Quantos é respondido com MPI_COMM_SIZE Quem sou eu? é respondido com MPI_COMM_RANK O número rank varia entre zero e (SIZE-1)

MPI – Programa MPI C (lab2) #include int main(int argc, char **argv) { int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); printf ("Hello world! I am %d of %d\n", rank, size); MPI_Finalize(); return 0; }

MPI - Message Passing Interface  Operacões de redução MPI_Reduce( void*, void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm ) void* -- operando void* -- resultado Int -- count MPI_Datatype – datatype MPI_Op – operação int -- root MPI_Comm -- comm