SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a MPI and Distributed Applications

"Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre...
"Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre..."Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre...
"Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre...lccausp
 
Análise dos recursos de tecnologia da informação
Análise dos recursos de tecnologia da informaçãoAnálise dos recursos de tecnologia da informação
Análise dos recursos de tecnologia da informaçãoEliseu L. Verissimo
 
DISCIPLINA REDES 1 TRABALHO A1
 DISCIPLINA REDES 1 TRABALHO A1 DISCIPLINA REDES 1 TRABALHO A1
DISCIPLINA REDES 1 TRABALHO A1Marcus Java
 
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e ProtocolosMVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e ProtocolosRover Marinho
 
Glauco Reis Modelagem BPMN.pdf
Glauco Reis Modelagem BPMN.pdfGlauco Reis Modelagem BPMN.pdf
Glauco Reis Modelagem BPMN.pdfJorge Gomes
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasCelso Crivelaro
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 
Computação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem GeralComputação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem GeralIgor José F. Freitas
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerMarkus Christen
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMarlesson Santana
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemasHelder da Rocha
 
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...tdc-globalcode
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfLuanaBatista74
 
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware   emca 2010 - centro paula souza - taubaté,spProjeto airsoftware   emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware emca 2010 - centro paula souza - taubaté,spCaique Guilherme Faria Dias
 
Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Jeison Barros
 

Semelhante a MPI and Distributed Applications (20)

"Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre...
"Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre..."Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre...
"Aula sobre Paralelização Automática". Rogério A. Gonçalves e Prof. Dr. Alfre...
 
Análise dos recursos de tecnologia da informação
Análise dos recursos de tecnologia da informaçãoAnálise dos recursos de tecnologia da informação
Análise dos recursos de tecnologia da informação
 
DISCIPLINA REDES 1 TRABALHO A1
 DISCIPLINA REDES 1 TRABALHO A1 DISCIPLINA REDES 1 TRABALHO A1
DISCIPLINA REDES 1 TRABALHO A1
 
Revista programar 20
Revista programar 20Revista programar 20
Revista programar 20
 
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e ProtocolosMVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
 
MPS.BR
MPS.BRMPS.BR
MPS.BR
 
Glauco Reis Modelagem BPMN.pdf
Glauco Reis Modelagem BPMN.pdfGlauco Reis Modelagem BPMN.pdf
Glauco Reis Modelagem BPMN.pdf
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
Revista programar 4
Revista programar 4Revista programar 4
Revista programar 4
 
Computação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem GeralComputação Paralela - Uma Abordagem Geral
Computação Paralela - Uma Abordagem Geral
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produção
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas
 
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
 
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware   emca 2010 - centro paula souza - taubaté,spProjeto airsoftware   emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
 
Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2
 
Aula 00 (1)
Aula 00 (1)Aula 00 (1)
Aula 00 (1)
 

Mais de Marcos Gonzalez

Slides experimentation softengineering
Slides experimentation softengineeringSlides experimentation softengineering
Slides experimentation softengineeringMarcos Gonzalez
 
Science 2.0: A opening Science
Science 2.0: A opening ScienceScience 2.0: A opening Science
Science 2.0: A opening ScienceMarcos Gonzalez
 
Classification of ECG of AIM using Compression-based Dissimilarity-Measure
Classification of ECG of AIM using Compression-based Dissimilarity-Measure Classification of ECG of AIM using Compression-based Dissimilarity-Measure
Classification of ECG of AIM using Compression-based Dissimilarity-Measure Marcos Gonzalez
 
A menina-do-vale Emprendedorismo
A menina-do-vale EmprendedorismoA menina-do-vale Emprendedorismo
A menina-do-vale EmprendedorismoMarcos Gonzalez
 
Fractional Fourier Transform: Fractional Wiener Filter in Scilab
Fractional Fourier Transform: Fractional Wiener Filter in ScilabFractional Fourier Transform: Fractional Wiener Filter in Scilab
Fractional Fourier Transform: Fractional Wiener Filter in ScilabMarcos Gonzalez
 
Filtros wavelet para Electrocardiogramas en R
Filtros wavelet para Electrocardiogramas en RFiltros wavelet para Electrocardiogramas en R
Filtros wavelet para Electrocardiogramas en RMarcos Gonzalez
 
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel ApplicationsGPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel ApplicationsMarcos Gonzalez
 
SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...
SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...
SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...Marcos Gonzalez
 

Mais de Marcos Gonzalez (9)

Slides experimentation softengineering
Slides experimentation softengineeringSlides experimentation softengineering
Slides experimentation softengineering
 
Science 2.0: A opening Science
Science 2.0: A opening ScienceScience 2.0: A opening Science
Science 2.0: A opening Science
 
Classification of ECG of AIM using Compression-based Dissimilarity-Measure
Classification of ECG of AIM using Compression-based Dissimilarity-Measure Classification of ECG of AIM using Compression-based Dissimilarity-Measure
Classification of ECG of AIM using Compression-based Dissimilarity-Measure
 
Intrapreneurship
IntrapreneurshipIntrapreneurship
Intrapreneurship
 
A menina-do-vale Emprendedorismo
A menina-do-vale EmprendedorismoA menina-do-vale Emprendedorismo
A menina-do-vale Emprendedorismo
 
Fractional Fourier Transform: Fractional Wiener Filter in Scilab
Fractional Fourier Transform: Fractional Wiener Filter in ScilabFractional Fourier Transform: Fractional Wiener Filter in Scilab
Fractional Fourier Transform: Fractional Wiener Filter in Scilab
 
Filtros wavelet para Electrocardiogramas en R
Filtros wavelet para Electrocardiogramas en RFiltros wavelet para Electrocardiogramas en R
Filtros wavelet para Electrocardiogramas en R
 
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel ApplicationsGPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
 
SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...
SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...
SlidesA Comparison of GPU Execution Time Prediction using Machine Learning an...
 

MPI and Distributed Applications

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 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 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 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 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. MPI Opera¸c˜oes Coletivas MPI Allreduce (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 21 / 30
  • 27. MPI Opera¸c˜oes Coletivas MPI Scan (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 22 / 30
  • 28. MPI Opera¸c˜oes Coletivas MPI Scatter (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 23 / 30
  • 29. MPI Opera¸c˜oes Coletivas MPI Gather (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 24 / 30
  • 30. MPI Opera¸c˜oes Coletivas MPI Allgather (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 25 / 30
  • 31. MPI Opera¸c˜oes Coletivas MPI Alltoall (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 26 / 30
  • 32. MPI Opera¸c˜oes Coletivas MPI Alltoall (gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 27 / 30
  • 33. 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
  • 34. 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
  • 35. 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