Algoritmos - Propriedades Desejáveis (1)

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais - Aula 6
Advertisements

SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO
Introdução à Ciência da Computação Linguagens de Programação.
Capítulo II – Algoritmos e Programas
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Introdução aos Sistemas Distribuídos
Comunicação entre processos distribuídos
OpenMP.
Exploits Nome:Arlindo Leal Boiça NetoRA: Clarice C. Calil MarafiottiRA: Rafael Santos RibeiroRA: Thiago Y.I.TakahashiRA:
Sistemas Operacionais - 4
MPI – Comunicações Com. Colectiva esquecida Barrier não há troca de dados, apenas sincroniza os processos int MPI_Barrier( MPI_Comm, comm) T com = T lat.
MPI - Introdução Message-Passing Model Task: código + memória (uma ou várias tasks no mesmo processador) Mensagem: as tasks comunicação entre si trocando.
RPC Remote Procedure Call
Conceitos Básicos de Computação O ABC da Computação.
Algoritmos Distribuídos 1ª Lista de Exercícios Antonio Alfredo Ferreira Loureiro Departamento de Ciência da Computação Universidade.
Padrão MPI – Message Passing Interface
Message Passing Interface (MPI)
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Aula.
Rganização de Computadores Multiprocessadores Capítulo 9 – Patterson & Hennessy Organização de Computadores Multiprocessadores Capítulo 9 – Patterson &
Co-simulação Régio Michelin.
Introdução Linguagem C
1 Sistemas Distribuídos - SDI Caracterização de Sistemas Distribuídos. Introdução. Exemplos de Sistemas Distribuídos. Desafios.
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
SVCs para Controle de Processos no Unix
SVCs para Controle de Processos no Unix
UNIX.
ESTRUTURA DE COMUNICAÇÃO DE DADOS
Prof. André Leon S. Gradvohl, Dr.
Revisão /*======================================================*/
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 27 (1) Programação com MPI Tópicos: Modelo de Programação Funções de Ambiente Funções Básicas.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 32 (1) Entrada/Saída em MPI Tópicos: Operações de E/S Sincronização de Processadores Referência:
CADEIA DE CARACTERES (Strings)
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Concorrência e Java RMI
How to Break Software Capítulo 2 Taíse Dias Testing from the User Interface.
Mole: Um Sistema de Agentes Móveis Baseado em Java Curso de Ciência da Computação Departamento de Informática Disciplina de Tópicos Especiais em Computação.
Técnicas de Desenvolvimento de Programas
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 26 (1) Troca de Mensagens Troca de Mensagens Tópicos: Características de Mensagens Implementação.
Comunicação entre processos: Mensagens Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.
Universidade de Mogi das Cruzes Tec
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Uso de parâmetros na linha de comando. Parâmetros da função main:
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Introdução à Linguagem C
MPI - Message Passing Interface Mestrado em Matemática Computacional 2003.
Wellington Felix.  Criada por Brian Kernighan e Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em Unix  C++ é uma extensão da.
PROGRAMAÇÃO DISTRIBUÍDA Aula 02 Prof. Henrique Mongelli
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Linguagens de Programação II
Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.
Programação de Computadores I – Arquivos
PROGRAMAÇÃO DISTRIBUÍDA Prof. Henrique Mongelli
1Unidade – Estrutura Condicional CASE Algoritmos e Linguagens de Programação Estrutura Condicional CASE Faculdade INED – Abril 2007 Prof. Edwar.
MPI – Message Passing Interface Algumas Funções. Funções básicas As 6 funções que permitem escrever muitos dos programas: MPI_Init -- inicia a computação.
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface.
Introdução de um programa no sistema, mostrando a interação com o sistema (programa 1.1). Utilização do compilador/ligador (cc – gcc). /* * Mostra Hello.
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Jorge Zavaleta PVM vs MPI. Introdução Objetivos do MPI Implementações e definições processos dinâmicos Contextos Operações não bloqueantes Portabilidade,heterogeneidade.
Banco de Dados Distribuídos Sílvia Cristina de Matos Soares
1 Middleware Marcellus Tavares. 2 Roteiro Sistemas distribuídos Motivação Middleware  MPI  RMI Referências.
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Transcrição da apresentação:

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

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.

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

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

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

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.

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 200.129.197.121 mongelli work122.dct.ufms.br mongelli work123.dct.ufms.br mongelli

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

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

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;

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); }

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;

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 */)

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.

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.

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 */)

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.

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.

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.

Seleção de Mensagens MPI_ANY_SOURCE MPI_ANY_TAG