Paradigma Troca de Mensagens e MPI
Ms. Eng. Marcos Amar´ıs Gonz´alez
Dr. Daniel de Angelis Cordeiro
Dr. Alfredo Goldman vel Lejbman
Universidade de S˜ao Paulo
Instituto de Matem´atica e Estad´ıstica
Departamento de Ciˆencias da Computa¸c˜ao
Maio, 2015
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
Timeline
1 Introdu¸c˜ao
2 Troca de Mensagens
3 MPI
Introdu¸c˜ao `a MPI
Opera¸c˜oes Ponto a Ponto
Opera¸c˜oes Coletivas
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
Introdu¸c˜ao
Troca de Mensagens e MPI
1 Introdu¸c˜ao
2 Troca de Mensagens
3 MPI
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
Introdu¸c˜ao
Introdu¸c˜ao
Taxonomia de Flynn.
Programa¸c˜ao Autom´atica ´e dif´ıcil.
Modelos de Programa¸c˜ao Paralela.
Paralelismo de dados, instru¸c˜oes e funcional.
1993 - Becker & Sterling started Beowulf project.
Cluster Beowulf ou m´aquinas paralelas.
Cluster Linux para Leigos
Caracter´ısticas
Flexibilidade
Escalabilidade
Alta Disponibilidade
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 1 / 30
Introdu¸c˜ao
Introdu¸c˜ao - Sistemas Distribu´ıdos
Sistemas Distribu´ıdos
Caracter´ısticas:
Concorrˆencia.
Escalabilidade.
Modularidade.
Eficiˆencia.
Intraoperabilidade.
Heterogeneidade.
Como se define um ambiente paralelo?
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 2 / 30
Introdu¸c˜ao
Mem´oria compartida Vs. Mem´oria Distribu´ıda
Figura : Mem´oria compartida Vs. Mem´oria Distribu´ıda
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 3 / 30
Introdu¸c˜ao
Desenho de Algoritmos Paralelos
Desenho de Algoritmos em ambientes Paralelos
O desenho em ambientes paralelos involucra quatro etapas: Parti¸c˜ao, Comunica¸c˜ao,
Agrupa¸c˜ao e Aloca¸c˜ao.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 4 / 30
Introdu¸c˜ao
Computa¸c˜ao em Nuvem e/ou Grades Computacionais
Nowadays, scientist can, in easily fashion, access to many resources (e.g., applications, storage,
CPUs, GPUs, remote sensors, supercomputers, among others) interconnected as a distributed
system throughout the Internet.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 5 / 30
Message Passing
Troca de Mensagens e MPI
1 Introdu¸c˜ao
2 Troca de Mensagens
3 MPI
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 5 / 30
Message Passing
Troca de Mensagens
O que ´e o Modelo de troca de mensagens?
´E um conjunto de processos que possuem acesso `a mem´oria local.
As informa¸c˜oes s˜ao enviadas da mem´oria local do processo para a
mem´oria local do processo remoto.
• Cada elemento de dado precisa estar em uma das subdivis˜oes do espa¸co
de mem´oria
– Os dados precisam ser explicitamente particionados e alocados.
• Todas as intera¸c˜oes (leitura e escrita) requerem a coopera¸c˜ao entre 2
processos
– O processo que possui os dados e o que deseja acessar os dados.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 6 / 30
Message Passing
Bibliotecas para Troca de Mensagens
Rotinas com finalidades bem espec´ıficas, como:
Rotinas de gerˆencia de processos.
Rotinas de comunica¸c˜ao Ponto a Ponto.
Rotinas de comunica¸c˜ao de grupos.
Paradigma s´ıncrono e ass´ıncrono.
Paradigma de programas fracamente acoplados
Quase todos os programas por passagem de mensagem s˜ao escritos
usando o modelo SPMD
Blocos B´asicos: send e receive
Os prot´otipos destas opera¸c˜oes s˜ao:
send(void *sendbuf, int nelems, int dest)
receive(void *recvbuf, int nelems, int source)
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 7 / 30
Message Passing
Principais Implementa¸c˜oes
MPI (Message Passing Interface)
C, C++, Fortran OpenMPI, MPICH2, etc.
Java, Python, etc.
Padr˜ao para computa¸c˜ao de alto-desempenho
PVM (Parallel Virtual Machine)
Cria conceito de m´aquina virtual.
Funciona em redes e m´aquinas heterogˆeneas.
Linux e Windows.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 8 / 30
MPI
Troca de Mensagens e MPI
1 Introdu¸c˜ao
2 Troca de Mensagens
3 MPI
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 8 / 30
MPI Introdu¸c˜ao `a MPI
Interfase para Troca de Mensagens
MPI ´e um padr˜ao para a implementa¸c˜ao de sistemas com troca de men-
sagens.
´E desenhado para uma variedade de sistemas de forma tal que os c´odigos
sejam port´aveis.
Los principales objetivos de MPI:
Proporcionar c´odigo port´atil.
Proporcionar implementa¸c˜oes eficientes.
Suportar arquiteturas paralelas heterogˆeneas.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 9 / 30
MPI Introdu¸c˜ao `a MPI
Funcionalidades e Conceitos
MPI B´asico: 6 fun¸c˜oes b´asicas indispens´aveis para o uso do programador.
MPI Avan¸cado: 125 fun¸c˜oes adicionais que acrescentam muita mais flexibilidade.
Conceitos
Processo (Programas em execu¸c˜ao).
Mensagem (Teoria da Comunica¸c˜ao, Modelo OSI).
1 Envelope (de quem, o que, para quem).
2 Dado (o que), informa¸c˜ao que se deseja enviar ou receber.
Rank - identifica¸c˜ao ´unica.
Group - um conjunto ordenado de N processos.
Communicator - ´e um objeto local que representa o dom´ınio (contexto) de uma
comunica¸c˜ao.
Comunica¸c˜oes Bloqueantes e N˜ao bloqueantes.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 10 / 30
MPI Introdu¸c˜ao `a MPI
Tipos de dados
Informa¸c˜ao que se deseja enviar ou receber. ´E representado por trˆes argu-
mentos:
1 Tipo do dado.
2 N´umero de elementos do dado na mensagem;
3 Endere¸co onde o dado se localiza;
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 11 / 30
MPI Introdu¸c˜ao `a MPI
OpenMPI - Instala¸c˜ao e Configura¸c˜ao
Instala¸c˜ao
El proceso de instalaci´on es bastante sencillo.
./configure --prefix=/opt/openmpi/gnu
Compile el software e instalelo
make && make install
Configura¸c˜ao
Para poder ejecutar un programa paralelo es necesario configurar el ambiente
apropiado:
Un sistema de archivos com´un donde se encuentren todos los ficheros involu-
crados en la ejecuci´on.
Un sistema de autenticaci´on de usuarios que permita el acceso sin contrase˜na
a los nodos participantes.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 12 / 30
MPI Introdu¸c˜ao `a MPI
Hello World
Para compilar: mpicc -o <execut´avel> <fonte>
Para executar: mpiexec -n <nproc> <execut´avel>
Exemplo de Compila¸c˜ao e Execu¸c˜ao
mpicc -o hello hello.c
mpiexec -n 4 hello
#include <mpi.h>
main(int argc , char *argv [])
{
int npes , myrank;
MPI_Init (&argc , &argv );
MPI_Comm_size (MPI_COMM_WORLD , &npes );
MPI_Comm_rank (MPI_COMM_WORLD , &myrank );
printf("Hello World (%d of %d)!n", myrank , npes );
MPI_Finalize ();
}
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 13 / 30
MPI Opera¸c˜oes Ponto a Ponto
MPI B´asico
O conjunto m´ınimo de fun¸c˜oes MPI
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 14 / 30
MPI Opera¸c˜oes Ponto a Ponto
Enviando e Recebendo Mensagens
int MPI_Send( void *address, int count,
MPI_Datatype datatype, int dest,
int tag, MPI_Comm comm)
int MPI_Recv( void *address, int count,
MPI_Datatype datatype, int source,
int tag, MPI_Comm comm, MPI_Status *status)
MPI ANY SOURCE: qualquer processo de dom´ınio de comunica¸c˜ao pode ser a
origem da mensagem.
MPI ANY TAG: mensagens com qualquer etiqueta s˜ao aceitas.
typedef struct MPI_Status {
int MPI_SOURCE; int MPI_TAG; int MPI_ERROR; };
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 15 / 30
MPI Opera¸c˜oes Ponto a Ponto
Exemplo: Distribui¸c˜ao de um Vetor
Exemplo: Distribui¸c˜ao de um Vetor.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 16 / 30
MPI Opera¸c˜oes Ponto a Ponto
Sobrepondo Comunica¸c˜ao e Computa¸c˜ao
MPI tamb´em provˆe fun¸c˜oes n˜ao bloqueantes:
Fun¸c˜oes para opera¸c˜oes n˜ao bloqueantes
int MPI_Isend ( void *buf, int count,
MPI_Datatype datatype, int dest, int tag,
MPI_Comm comm, MPI_Request *request)
int MPI_Irecv ( void *buf, int count,
MPI_Datatype datatype, int source, int tag,
MPI_Comm comm, MPI_Request *request)
int MPI_Test(MPI_Request *request, int *flag,
PI_Status *status)
int MPI_Wait(MPI_Request *request, MPI_Status *status)
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 17 / 30
MPI Opera¸c˜oes Coletivas
Opera¸c˜oes Coletivas
O padr˜ao MPI provˆe um grande conjunto de fun¸c˜oes para realizar
opera¸c˜aoes de comunica¸c˜ao coletiva.
Cada opera¸c˜ao ´e realizada entre todos os processos de um grupo de
comunica¸c˜ao.
– Todos os processos do grupo precisam chamar a fun¸c˜ao coletiva.
– Todos os processos da aplica¸c˜ao devem ser chamados com o com-
municator: MPI COMM WORLD.
Cada processo fica bloqueado at´e que todos os demais cheguem na
barreira e chamem a fun¸c˜ao.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 18 / 30
MPI Opera¸c˜oes Coletivas
Opera¸c˜oes Coletivas
A opera¸c˜ao de broadcast (difus˜ao) de um para todos ´e:
int MPI_Bcast(void *buf, int count,
MPI_Datatype datatype, int source,
MPI_Comm comm)
A opera¸c˜ao de redu¸c˜ao de todos para um ´e dada por:
int MPI_Reduce(void *sendbuf, void *recvbuf,
int count, MPI_Datatype datatype,
MPI_Op op, int target, MPI_Comm comm
A opera¸c˜ao de sincroniza¸c˜ao por barreira ´e:
int MPI_Barrier(MPI_Comm comm)
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 19 / 30
MPI Opera¸c˜oes Coletivas
Opera¸c˜oes de Redu¸c˜ao Dispon´ıveis
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 20 / 30
MPI Opera¸c˜oes Coletivas
MPI Allreduce
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 21 / 30
MPI Opera¸c˜oes Coletivas
MPI Scan
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 22 / 30
MPI Opera¸c˜oes Coletivas
MPI Scatter
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 23 / 30
MPI Opera¸c˜oes Coletivas
MPI Gather
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 24 / 30
MPI Opera¸c˜oes Coletivas
MPI Allgather
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 25 / 30
MPI Opera¸c˜oes Coletivas
MPI Alltoall
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 26 / 30
MPI Opera¸c˜oes Coletivas
MPI Alltoall
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 27 / 30
MPI Opera¸c˜oes Coletivas
Execu¸c˜ao em M´ultiplas M´aquinas
Passos a seguir...
1 Configurar acesso SSH sem uso de senha.
- (http://www.linuxproblem.org/art 9.html)
2 Criar arquivo com os endere¸cos IP (ou nomes) das m´aquinas.
Exemplo (hosts.dat):
192.168.14.160
192.168.14.161
3 Copiar o arquivo execut´avel para cada um dos n´os, usando o comando
scp; caso n˜ao tenha um NFS configurado.
4 Iniciar a execu¸c˜ao:
mpiexec -np 2 -hostfile hosts.dat ./High.out
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 28 / 30
MPI Opera¸c˜oes Coletivas
Uso de MPI com OpenMP
”Programa¸c˜ao Hybrida”
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 29 / 30
MPI Opera¸c˜oes Coletivas
S´o isso... Obrigado.
O EP 3 MPI, deve estar pronto hoje.
Data de entrega: 5 de Junho!
Bom Final de Semana para todos :-)
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 30 / 30

MPI and Distributed Applications

  • 1.
    Paradigma Troca deMensagens e MPI Ms. Eng. Marcos Amar´ıs Gonz´alez Dr. Daniel de Angelis Cordeiro Dr. Alfredo Goldman vel Lejbman Universidade de S˜ao Paulo Instituto de Matem´atica e Estad´ıstica Departamento de Ciˆencias da Computa¸c˜ao Maio, 2015 (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
  • 2.
    Timeline 1 Introdu¸c˜ao 2 Trocade Mensagens 3 MPI Introdu¸c˜ao `a MPI Opera¸c˜oes Ponto a Ponto Opera¸c˜oes Coletivas (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
  • 3.
    Introdu¸c˜ao Troca de Mensagense MPI 1 Introdu¸c˜ao 2 Troca de Mensagens 3 MPI (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
  • 4.
    Introdu¸c˜ao Introdu¸c˜ao Taxonomia de Flynn. Programa¸c˜aoAutom´atica ´e dif´ıcil. Modelos de Programa¸c˜ao Paralela. Paralelismo de dados, instru¸c˜oes e funcional. 1993 - Becker & Sterling started Beowulf project. Cluster Beowulf ou m´aquinas paralelas. Cluster Linux para Leigos Caracter´ısticas Flexibilidade Escalabilidade Alta Disponibilidade (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 1 / 30
  • 5.
    Introdu¸c˜ao Introdu¸c˜ao - SistemasDistribu´ıdos Sistemas Distribu´ıdos Caracter´ısticas: Concorrˆencia. Escalabilidade. Modularidade. Eficiˆencia. Intraoperabilidade. Heterogeneidade. Como se define um ambiente paralelo? (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 2 / 30
  • 6.
    Introdu¸c˜ao Mem´oria compartida Vs.Mem´oria Distribu´ıda Figura : Mem´oria compartida Vs. Mem´oria Distribu´ıda (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 3 / 30
  • 7.
    Introdu¸c˜ao Desenho de AlgoritmosParalelos Desenho de Algoritmos em ambientes Paralelos O desenho em ambientes paralelos involucra quatro etapas: Parti¸c˜ao, Comunica¸c˜ao, Agrupa¸c˜ao e Aloca¸c˜ao. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 4 / 30
  • 8.
    Introdu¸c˜ao Computa¸c˜ao em Nuveme/ou Grades Computacionais Nowadays, scientist can, in easily fashion, access to many resources (e.g., applications, storage, CPUs, GPUs, remote sensors, supercomputers, among others) interconnected as a distributed system throughout the Internet. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 5 / 30
  • 9.
    Message Passing Troca deMensagens e MPI 1 Introdu¸c˜ao 2 Troca de Mensagens 3 MPI (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 5 / 30
  • 10.
    Message Passing Troca deMensagens O que ´e o Modelo de troca de mensagens? ´E um conjunto de processos que possuem acesso `a mem´oria local. As informa¸c˜oes s˜ao enviadas da mem´oria local do processo para a mem´oria local do processo remoto. • Cada elemento de dado precisa estar em uma das subdivis˜oes do espa¸co de mem´oria – Os dados precisam ser explicitamente particionados e alocados. • Todas as intera¸c˜oes (leitura e escrita) requerem a coopera¸c˜ao entre 2 processos – O processo que possui os dados e o que deseja acessar os dados. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 6 / 30
  • 11.
    Message Passing Bibliotecas paraTroca de Mensagens Rotinas com finalidades bem espec´ıficas, como: Rotinas de gerˆencia de processos. Rotinas de comunica¸c˜ao Ponto a Ponto. Rotinas de comunica¸c˜ao de grupos. Paradigma s´ıncrono e ass´ıncrono. Paradigma de programas fracamente acoplados Quase todos os programas por passagem de mensagem s˜ao escritos usando o modelo SPMD Blocos B´asicos: send e receive Os prot´otipos destas opera¸c˜oes s˜ao: send(void *sendbuf, int nelems, int dest) receive(void *recvbuf, int nelems, int source) (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 7 / 30
  • 12.
    Message Passing Principais Implementa¸c˜oes MPI(Message Passing Interface) C, C++, Fortran OpenMPI, MPICH2, etc. Java, Python, etc. Padr˜ao para computa¸c˜ao de alto-desempenho PVM (Parallel Virtual Machine) Cria conceito de m´aquina virtual. Funciona em redes e m´aquinas heterogˆeneas. Linux e Windows. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 8 / 30
  • 13.
    MPI Troca de Mensagense MPI 1 Introdu¸c˜ao 2 Troca de Mensagens 3 MPI (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 8 / 30
  • 14.
    MPI Introdu¸c˜ao `aMPI Interfase para Troca de Mensagens MPI ´e um padr˜ao para a implementa¸c˜ao de sistemas com troca de men- sagens. ´E desenhado para uma variedade de sistemas de forma tal que os c´odigos sejam port´aveis. Los principales objetivos de MPI: Proporcionar c´odigo port´atil. Proporcionar implementa¸c˜oes eficientes. Suportar arquiteturas paralelas heterogˆeneas. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 9 / 30
  • 15.
    MPI Introdu¸c˜ao `aMPI Funcionalidades e Conceitos MPI B´asico: 6 fun¸c˜oes b´asicas indispens´aveis para o uso do programador. MPI Avan¸cado: 125 fun¸c˜oes adicionais que acrescentam muita mais flexibilidade. Conceitos Processo (Programas em execu¸c˜ao). Mensagem (Teoria da Comunica¸c˜ao, Modelo OSI). 1 Envelope (de quem, o que, para quem). 2 Dado (o que), informa¸c˜ao que se deseja enviar ou receber. Rank - identifica¸c˜ao ´unica. Group - um conjunto ordenado de N processos. Communicator - ´e um objeto local que representa o dom´ınio (contexto) de uma comunica¸c˜ao. Comunica¸c˜oes Bloqueantes e N˜ao bloqueantes. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 10 / 30
  • 16.
    MPI Introdu¸c˜ao `aMPI Tipos de dados Informa¸c˜ao que se deseja enviar ou receber. ´E representado por trˆes argu- mentos: 1 Tipo do dado. 2 N´umero de elementos do dado na mensagem; 3 Endere¸co onde o dado se localiza; (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 11 / 30
  • 17.
    MPI Introdu¸c˜ao `aMPI OpenMPI - Instala¸c˜ao e Configura¸c˜ao Instala¸c˜ao El proceso de instalaci´on es bastante sencillo. ./configure --prefix=/opt/openmpi/gnu Compile el software e instalelo make && make install Configura¸c˜ao Para poder ejecutar un programa paralelo es necesario configurar el ambiente apropiado: Un sistema de archivos com´un donde se encuentren todos los ficheros involu- crados en la ejecuci´on. Un sistema de autenticaci´on de usuarios que permita el acceso sin contrase˜na a los nodos participantes. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 12 / 30
  • 18.
    MPI Introdu¸c˜ao `aMPI Hello World Para compilar: mpicc -o <execut´avel> <fonte> Para executar: mpiexec -n <nproc> <execut´avel> Exemplo de Compila¸c˜ao e Execu¸c˜ao mpicc -o hello hello.c mpiexec -n 4 hello #include <mpi.h> main(int argc , char *argv []) { int npes , myrank; MPI_Init (&argc , &argv ); MPI_Comm_size (MPI_COMM_WORLD , &npes ); MPI_Comm_rank (MPI_COMM_WORLD , &myrank ); printf("Hello World (%d of %d)!n", myrank , npes ); MPI_Finalize (); } (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 13 / 30
  • 19.
    MPI Opera¸c˜oes Pontoa Ponto MPI B´asico O conjunto m´ınimo de fun¸c˜oes MPI (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 14 / 30
  • 20.
    MPI Opera¸c˜oes Pontoa Ponto Enviando e Recebendo Mensagens int MPI_Send( void *address, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) int MPI_Recv( void *address, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) MPI ANY SOURCE: qualquer processo de dom´ınio de comunica¸c˜ao pode ser a origem da mensagem. MPI ANY TAG: mensagens com qualquer etiqueta s˜ao aceitas. typedef struct MPI_Status { int MPI_SOURCE; int MPI_TAG; int MPI_ERROR; }; (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 15 / 30
  • 21.
    MPI Opera¸c˜oes Pontoa Ponto Exemplo: Distribui¸c˜ao de um Vetor Exemplo: Distribui¸c˜ao de um Vetor. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 16 / 30
  • 22.
    MPI Opera¸c˜oes Pontoa Ponto Sobrepondo Comunica¸c˜ao e Computa¸c˜ao MPI tamb´em provˆe fun¸c˜oes n˜ao bloqueantes: Fun¸c˜oes para opera¸c˜oes n˜ao bloqueantes int MPI_Isend ( void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Irecv ( void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Test(MPI_Request *request, int *flag, PI_Status *status) int MPI_Wait(MPI_Request *request, MPI_Status *status) (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 17 / 30
  • 23.
    MPI Opera¸c˜oes Coletivas Opera¸c˜oesColetivas O padr˜ao MPI provˆe um grande conjunto de fun¸c˜oes para realizar opera¸c˜aoes de comunica¸c˜ao coletiva. Cada opera¸c˜ao ´e realizada entre todos os processos de um grupo de comunica¸c˜ao. – Todos os processos do grupo precisam chamar a fun¸c˜ao coletiva. – Todos os processos da aplica¸c˜ao devem ser chamados com o com- municator: MPI COMM WORLD. Cada processo fica bloqueado at´e que todos os demais cheguem na barreira e chamem a fun¸c˜ao. (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 18 / 30
  • 24.
    MPI Opera¸c˜oes Coletivas Opera¸c˜oesColetivas A opera¸c˜ao de broadcast (difus˜ao) de um para todos ´e: int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int source, MPI_Comm comm) A opera¸c˜ao de redu¸c˜ao de todos para um ´e dada por: int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int target, MPI_Comm comm A opera¸c˜ao de sincroniza¸c˜ao por barreira ´e: int MPI_Barrier(MPI_Comm comm) (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 19 / 30
  • 25.
    MPI Opera¸c˜oes Coletivas Opera¸c˜oesde Redu¸c˜ao Dispon´ıveis (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 20 / 30
  • 26.
    MPI Opera¸c˜oes Coletivas MPIAllreduce (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 21 / 30
  • 27.
    MPI Opera¸c˜oes Coletivas MPIScan (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 22 / 30
  • 28.
    MPI Opera¸c˜oes Coletivas MPIScatter (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 23 / 30
  • 29.
    MPI Opera¸c˜oes Coletivas MPIGather (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 24 / 30
  • 30.
    MPI Opera¸c˜oes Coletivas MPIAllgather (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 25 / 30
  • 31.
    MPI Opera¸c˜oes Coletivas MPIAlltoall (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 26 / 30
  • 32.
    MPI Opera¸c˜oes Coletivas MPIAlltoall (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 27 / 30
  • 33.
    MPI Opera¸c˜oes Coletivas Execu¸c˜aoem M´ultiplas M´aquinas Passos a seguir... 1 Configurar acesso SSH sem uso de senha. - (http://www.linuxproblem.org/art 9.html) 2 Criar arquivo com os endere¸cos IP (ou nomes) das m´aquinas. Exemplo (hosts.dat): 192.168.14.160 192.168.14.161 3 Copiar o arquivo execut´avel para cada um dos n´os, usando o comando scp; caso n˜ao tenha um NFS configurado. 4 Iniciar a execu¸c˜ao: mpiexec -np 2 -hostfile hosts.dat ./High.out (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 28 / 30
  • 34.
    MPI Opera¸c˜oes Coletivas Usode MPI com OpenMP ”Programa¸c˜ao Hybrida” (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 29 / 30
  • 35.
    MPI Opera¸c˜oes Coletivas S´oisso... Obrigado. O EP 3 MPI, deve estar pronto hoje. Data de entrega: 5 de Junho! Bom Final de Semana para todos :-) (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 30 / 30