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