View
47
Download
1
Category
Preview:
Citation preview
Paradigma Troca de Mensagens e MPI
Ms. Eng. Marcos Amarıs GonzalezDr. Daniel de Angelis Cordeiro
Dr. Alfredo Goldman vel Lejbman
Universidade de Sao PauloInstituto de Matematica e Estadıstica
Departamento de Ciencias da Computacao
Maio, 2015
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
Timeline
1 Introducao
2 Troca de Mensagens
3 MPIIntroducao a MPIOperacoes Ponto a PontoOperacoes Coletivas
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
Introducao
Troca de Mensagens e MPI
1 Introducao
2 Troca de Mensagens
3 MPI
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 0 / 30
Introducao
Introducao
Taxonomia de Flynn.
Programacao Automatica e difıcil.
Modelos de Programacao Paralela.
Paralelismo de dados, instrucoes e funcional.
1993 - Becker & Sterling started Beowulf project.
Cluster Beowulf ou maquinas 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
Introducao
Introducao - Sistemas Distribuıdos
Sistemas Distribuıdos
Caracterısticas:
Concorrencia.
Escalabilidade.
Modularidade.
Eficiencia.
Intraoperabilidade.
Heterogeneidade.
Como se define um ambiente paralelo?
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 2 / 30
Introducao
Memoria compartida Vs. Memoria Distribuıda
Figura : Memoria compartida Vs. Memoria Distribuıda
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 3 / 30
Introducao
Desenho de Algoritmos Paralelos
Desenho de Algoritmos em ambientes Paralelos
O desenho em ambientes paralelos involucra quatro etapas: Particao, Comunicacao,Agrupacao e Alocacao.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 4 / 30
Introducao
Computacao 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 distributedsystem 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 Introducao
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 memoria local.
As informacoes sao enviadas da memoria local do processo para amemoria local do processo remoto.
• Cada elemento de dado precisa estar em uma das subdivisoes do espacode memoria– Os dados precisam ser explicitamente particionados e alocados.• Todas as interacoes (leitura e escrita) requerem a cooperacao entre 2processos– 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 gerencia de processos.
Rotinas de comunicacao Ponto a Ponto.
Rotinas de comunicacao de grupos.
Paradigma sıncrono e assıncrono.
Paradigma de programas fracamente acoplados
Quase todos os programas por passagem de mensagem sao escritosusando o modelo SPMD
Blocos Basicos: send e receive
Os prototipos destas operacoes sao:
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 Implementacoes
MPI (Message Passing Interface)
C, C++, Fortran OpenMPI, MPICH2, etc.
Java, Python, etc.
Padrao para computacao de alto-desempenho
PVM (Parallel Virtual Machine)
Cria conceito de maquina virtual.
Funciona em redes e maquinas heterogeneas.
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 Introducao
2 Troca de Mensagens
3 MPI
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 8 / 30
MPI Introducao a MPI
Interfase para Troca de Mensagens
MPI e um padrao para a implementacao de sistemas com troca de men-sagens.E desenhado para uma variedade de sistemas de forma tal que os codigossejam portaveis.
Los principales objetivos de MPI:
Proporcionar codigo portatil.
Proporcionar implementacoes eficientes.
Suportar arquiteturas paralelas heterogeneas.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 9 / 30
MPI Introducao a MPI
Funcionalidades e Conceitos
MPI Basico: 6 funcoes basicas indispensaveis para o uso do programador.MPI Avancado: 125 funcoes adicionais que acrescentam muita mais flexibilidade.
Conceitos
Processo (Programas em execucao).
Mensagem (Teoria da Comunicacao, Modelo OSI).
1 Envelope (de quem, o que, para quem).2 Dado (o que), informacao que se deseja enviar ou receber.
Rank - identificacao unica.
Group - um conjunto ordenado de N processos.
Communicator - e um objeto local que representa o domınio (contexto) de umacomunicacao.
Comunicacoes Bloqueantes e Nao bloqueantes.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 10 / 30
MPI Introducao a MPI
Tipos de dados
Informacao que se deseja enviar ou receber. E representado por tres argu-mentos:
1 Tipo do dado.2 Numero de elementos do dado na mensagem;3 Endereco onde o dado se localiza;
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 11 / 30
MPI Introducao a MPI
OpenMPI - Instalacao e Configuracao
Instalacao
El proceso de instalacion es bastante sencillo../configure --prefix=/opt/openmpi/gnu
Compile el software e instalelomake && make install
Configuracao
Para poder ejecutar un programa paralelo es necesario configurar el ambienteapropiado:
Un sistema de archivos comun donde se encuentren todos los ficheros involu-crados en la ejecucion.
Un sistema de autenticacion de usuarios que permita el acceso sin contrasenaa los nodos participantes.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 12 / 30
MPI Introducao a MPI
Hello World
Para compilar: mpicc -o <executavel> <fonte>
Para executar: mpiexec -n <nproc> <executavel>
Exemplo de Compilacao e Execucao
mpicc -o hello hello.cmpiexec -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 Operacoes Ponto a Ponto
MPI Basico
O conjunto mınimo de funcoes MPI
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 14 / 30
MPI Operacoes 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 comunicacao pode ser aorigem da mensagem.
MPI ANY TAG: mensagens com qualquer etiqueta sao 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 Operacoes Ponto a Ponto
Exemplo: Distribuicao de um Vetor
Exemplo: Distribuicao de um Vetor.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 16 / 30
MPI Operacoes Ponto a Ponto
Sobrepondo Comunicacao e Computacao
MPI tambem prove funcoes nao bloqueantes:
Funcoes para operacoes nao 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 Operacoes Coletivas
Operacoes Coletivas
O padrao MPI prove um grande conjunto de funcoes para realizaroperacaoes de comunicacao coletiva.
Cada operacao e realizada entre todos os processos de um grupo decomunicacao.– Todos os processos do grupo precisam chamar a funcao coletiva.– Todos os processos da aplicacao devem ser chamados com o com-municator: MPI COMM WORLD.
Cada processo fica bloqueado ate que todos os demais cheguem nabarreira e chamem a funcao.
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 18 / 30
MPI Operacoes Coletivas
Operacoes Coletivas
A operacao de broadcast (difusao) de um para todos e:
int MPI_Bcast(void *buf, int count,
MPI_Datatype datatype, int source,
MPI_Comm comm)
A operacao de reducao 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 operacao de sincronizacao 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 Operacoes Coletivas
Operacoes de Reducao Disponıveis
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 20 / 30
MPI Operacoes Coletivas
MPI Allreduce
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 21 / 30
MPI Operacoes Coletivas
MPI Scan
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 22 / 30
MPI Operacoes Coletivas
MPI Scatter
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 23 / 30
MPI Operacoes Coletivas
MPI Gather
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 24 / 30
MPI Operacoes Coletivas
MPI Allgather
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 25 / 30
MPI Operacoes Coletivas
MPI Alltoall
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 26 / 30
MPI Operacoes Coletivas
MPI Alltoall
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 27 / 30
MPI Operacoes Coletivas
Execucao em Multiplas Maquinas
Passos a seguir...
1 Configurar acesso SSH sem uso de senha.- (http://www.linuxproblem.org/art 9.html)
2 Criar arquivo com os enderecos IP (ou nomes) das maquinas.Exemplo (hosts.dat):192.168.14.160192.168.14.161
3 Copiar o arquivo executavel para cada um dos nos, usando o comandoscp; caso nao tenha um NFS configurado.
4 Iniciar a execucao:mpiexec -np 2 -hostfile hosts.dat ./High.out
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 28 / 30
MPI Operacoes Coletivas
Uso de MPI com OpenMP
”Programacao Hybrida”
(gold, dcordeiro, amaris)@ime.usp.br Troca de Mensagens e MPI Maio, 2015 29 / 30
Recommended