A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "MPI - Message Passing Interface Mestrado em Matemática Computacional 2003."— Transcrição da apresentação:

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

2 MPI - Message Passing Interface  http://www-unix.mcs.anl.gov/mpi/ http://www-unix.mcs.anl.gov/mpi/  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

3 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

4 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.

5 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

6 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)

7 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".

8 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

9 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

10 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)

11 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 )

12 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

13 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.

14 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; }

15 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)

16 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; }

17 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


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

Apresentações semelhantes


Anúncios Google