35
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

MPI and Distributed Applications

Embed Size (px)

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

MPI Operacoes Coletivas

So 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