A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos - Propriedades Desejáveis (1)

Apresentações semelhantes


Apresentação em tema: "Algoritmos - Propriedades Desejáveis (1)"— Transcrição da apresentação:

1 Algoritmos - Propriedades Desejáveis (1)
Graus de simetria: simetria total: todos os processos têm exatamente o mesmo comportamento. Simetria textual: o código de todos os processos é igual. forte: comportamento pode diferir apenas pelas diferentes mensagem recebidas fraca: comportamento é determinado por informação global

2 Algoritmos - Propriedades Desejáveis (2)
Robustez a falhas de grau máximo de severidade. Menor número de suposições sobre o ambiente (número total de processos, topologia). Menor número de mensagens usadas. Decisões de processos baseadas apenas em informações locais. Fairness; ausência de deadlocks; ausência de starvation.

3 Ambientes e Linguagens
Ambientes (CORBA, Java) Bibliotecas para linguagens (PVM, MPI, Linda).

4 MPI Message Passing Interface
É um sistema de troca de mensagens padronizado e portável. Baseado em uma biblioteca de funções que podem ser chamadas por programas C ou Fortran. Responsável pela comunicação e sincro-nização de processos

5 MPI (2) Pode ser usado em diversos tipos de máquinas de memória distribuída . Pode ser usado em redes locais heterogêneas.

6 MPI - Funcionamento São iniciados daemons em máquinas que farão parte da "máquina paralela". Esses daemons permanecem "adormecidos" nas máquinas remotas até que recebam um sinal para carregar um arquivo executável MPI para executar.

7 MPI - Preparação (1) No home do usuário, em cada computador remoto, deve haver um arquivo chamado .rhosts. Esse arquivo informa as máquinas que terão acesso à essa via rsh (remote shell). Exemplo: work120.dct.ufms.br mongelli mongelli work122.dct.ufms.br mongelli work123.dct.ufms.br mongelli

8 MPI - Preparação (2) Em cada computador, é necessário criar um diretório no home do usuário, onde será co- locado pelo menos o programa executável. Exemplo: mkdir mpi

9 MPI - Preparação (3) Na máquina que vai iniciar o MPI, criar um arquivo chamado lamhosts no diretório mpi. Esse arquivo informa quais computadores da rede local farão parte da "máquina paralela". Exemplo: work120.dct.ufms.br work121.dct.ufms.br work122.dct.ufms.br work123.dct.ufms.br

10 Hello World #include <stdio.h> #include <string.h>
#include "mpi.h" int main(int argc, char* argv[]){ int my_rank; int p; int source; int dest; char message[100]; MPI_Status status;

11 MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &p); if(my_rank != 0){ sprintf(message, "Greetings from process %d", my_rank); dest = 0; MPI_Send(message, strlen(message)+1, MPI_CHAR, dest, 0, MPI_COMM_WORLD); }

12 else{ for(source=1;source<p;source++){ MPI_Recv(message, 100, MPI_CHAR, source, 0, MPI_COMM_WORLD, &status); printf("%s\n", message); } MPI_Finalize(); return 0;

13 Envio de Mensagem A função MPI_Send é usada para o envio de mensagens individualmente entre processos. Sua sintaxe é: int MPI_Send( void* buffer /* in */, int count /* in */, MPI_Datatype datatype /* in */, int destination /* in */, int tag /* in */, MPI_Comm Communicator /* in */)

14 Exemplo - Envio A função MPI_Send é bloqueante.
MPI_Send(&x, 1, MPI_FLOAT, 1, 0, MPI_COMM_WORLD); O processo 0 envio um float para o processo 1.

15 Buffer de Envio O buffer de envio de MPI_Send consiste de count sucessivas entradas do tipo indicado por datatype, começando pelo endereço buffer. O comprimento da mensagem é especifica-do pelo número de entradas.

16 Recebimento de Mensagem
A função MPI_Recv é usada para o recebi- mento de mensagens individualmente entre processos. Sua sintaxe é: int MPI_Recv( void* buffer /* in */, int count /* in */, MPI_Datatype datatype /* in */, int source /* in */, int tag /* in */, MPI_Comm Communicator /* in */, MPI_Status Status /* out */)

17 Buffer de Recebimento O buffer de recebimento consiste de espaço suficiente para conter count entradas consecutivas do tipo dado por datatype, iniciando-se no endereço buffer. O tamanho da mensagem recebida deve ser menor ou igual ao buffer de recebimento.

18 Exemplo - Recebimento A função MPI_Recv também é bloqueante.
MPI_Recv(&x, 1, MPI_FLOAT, 0, 0, MPI_COMM_WORLD, &status); O processador 1 recebe um float do processador 0, que é armazenado em x.

19 Para que o dado seja recebido é necessário que os argumentos em tag e communicator coincidam, e que exista memória suficiente para receber os dados.

20 Seleção de Mensagens MPI_ANY_SOURCE MPI_ANY_TAG


Carregar ppt "Algoritmos - Propriedades Desejáveis (1)"

Apresentações semelhantes


Anúncios Google