Computaçãoparalelae distribuída



Documentos relacionados
Ambientes de troca de mensagens - PVM. Aleardo Manacero Jr.

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Parallel Virtual Machine

Sistemas Distribuídos Arquiteturas Middlewares

UNIVERSIDADE. Sistemas Distribuídos

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Passagem de Mensagens

Programação Paralela por Passagem de Mensagens

Programação Paralela com Troca de Mensagens. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Arquitetura de Computadores II

Distributed Systems Principles and Paradigms

Programação Paralela e Distribuída - PVM

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Comunicação em Sistemas Distribuídos

5 Apresentando a linguagem C

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Prof. Marcelo Cunha Parte 5

UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++


Sistemas Distribuídos usando PVM e RMI. Vinícius Passos Montes

Internet - A rede Mundial

Sistemas Distribuídos

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

Sistemas distribuídos:comunicação

Capítulo 2. Charm++ 16

Criando uma System Call no Minix

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

SISTEMAS DISTRIBUÍDOS

Algoritmos e Programação _ Departamento de Informática

Sincronização de Processos (5) Troca de Mensagens

Capítulo 06: Arquivos

Professor: Gládston Duarte

Sumário INTRODUÇÃO... 4 PROTOCOLO ARP...5 ARP - ADDRESS RESOLUTION PROTOCOL...5 FUNCIONAMENTO DO PROTOCOLO ARP...5 CACHE ARP... 6

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite

Considerações no Projeto de Sistemas Cliente/Servidor

Rede de Computadores II

PROGRAMA DE DISCIPLINA

Parte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Programação Paralela. Simone de Lima Martins Agosto/2002

Sistemas Distribuídos

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Chamadas Remotas de Procedimentos (RPC)

Comunicação. Parte II

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Conceitos básicos da linguagem C

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

3. Comunicação em Sistemas Distribuídos

Introdução ao PHP. Prof. Késsia Marchi

Camada de Transporte TCP/IP e Aplicação

SISTEMAS DISTRIBUÍDOS

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

PROGRAMA DE DISCIPLINA

Introdução à Programação

INSTITUTO SUPERIOR DE CIÊNCIAS DO TRABALHO E DA EMPRESA. Filas de mensagem

Programação Concorrente

Clique sobre Minhas configurações de perfil para expandir as opções. Em seguida, clique em Modificar perfil:

Persistência de Dados

O Processo de Programação

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Redes de Computadores

Message Passing Interface - MPI

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:

MODELO CLIENTE SERVIDOR

Introdução à Programação

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Sincronização em Sistemas Distribuídos

Computação por Passagem de Mensagens

Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C

RMI: Uma Visão Conceitual

Nomes e Endereçamento. Nomes e Endereçamento. Paradigmas em Sistemas Distribuídos. Paradigmas em Sistemas Distribuídos

Paradigma Cliente/Servidor

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Introdução. Sistemas Operacionais

Sistemas Distribuídos Grupos

Comunicação em Sistemas Distribuídos

Geração de Código em C para Simples

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:


Padrões Arquiteturais. Sistemas Distribuídos: Broker

Eclipse com c++11 e boost Etapa 1- Download da IDE Eclipse c++ e configuração do MinGW

Grupos de Processos (Comunicação Grupal)

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

Sistemas Distribuídos

Sistemas Operacionais

Transcrição:

Computaçãoparalelae distribuída Computaçãoparalelacom a utilizaçãodo PVM (Parallel Virtual Machine) Prof. Dr. Luciano José Senger

Parallel Virtual Machine (PVM) O programador decompõe o programa em programas separados e cada um deles será escrito em C ou Fortran e compilado para ser executado nas diferentes máquinas da rede O conjunto de máquinas que será utilizado para processamento deve ser definido antes do início da execução dos programas Cria-se um arquivo (hostfile) com o nome de todas as máquinas disponíveis que será lido pelo PVM O roteamento de mensagens é feito pelos processos daemon do PVM

Parallel Virtual Machine (PVM) Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de altaperformance Interface extremamente simples Contém primitivas de alto-nível como broadcast e sincronização com barreiras

Passagem de mensagens utilizando o PVM Estação de trabalho Daemon PVM Estação de trabalho Daemon PVM Mensagens enviadas através da rede Estação de trabalho Daemon PVM

Passagem de mensagens utilizando o PVM Estação de trabalho Daemon PVM Estação de trabalho Programa da aplicação (executável) Mensagens enviadas Estação de trabalho Daemon PVM Programa da aplicação (executável) Daemon PVM Programa da aplicação (executável)

Rotinas básicas do PVM Todas as rotinas são sem bloqueio (ou assíncronas na terminologia PVM) enquanto que rotinas de recebimento podem ser com bloqueio (síncronas) ou sem bloqueio Utiliza um rótulo paramensagem (message tag) Identificador inteiro para o índice ( tid) pvm_psend() e pvm_precv() rotinas utilizadas quando dados sendo transmitidos são todos do mesmo tipo

Envio de mensagem com dados de vários tipos Os dados são empacotados em um buffer antes de enviá-los O receptor tem que desempacotá-los e acordo com o formato em que foram empacotados Rotinas específicas para empacotamento e desempacotamento para cada tipo de dados

Mensagem PVM como uma estrutura de dados processo_1 pvm_initsend(); pvm_pkint(.. &x..); pvm_pkstr( &s ); pvm_pkfloat( &y ); pvm_send(processo_2...); Buffer de envio processo_2 x s y Buffer de recepção pvm_recv(processo_1 ); pvm_upkint(.. &x..); pvm_upkstr( &s ); pvm_upkfloat( &y );

Rotinas coletivas Rotinas coletivas são implementadas em uma biblioteca de software específica (não precisa ser compilada com a aplicação) Operaçõesutilizadas com grupo de processos (pvm_bcast(), pvm_scatter(),pvm_gather() e pvm_reduce()) com exceção de multicast(pvm_mcast) Um processo se junta a um grupo através da rotina pvm_joingroup() pvm_bcast envia mensagem para cada membro do grupo pvm_gather() coleta valores de cada membro do grupo

Exemplo de programa (mestre) #include <stdio.h> #include <stlib.h> #include <pvm3.h> #define SLAVE ``spsum #define PROC 10 #define NELEM 1000 main() { int mytid, tids[proc] int n=nelem, nproc =PROC; int no, i, who, msgtype; int data[nelem],result[proc],tot=0; char fn[255]; FILE *fp; mytid=pvm_mytid(); no=pvm_spawn(slave,(char **)0,0,`` ``,nproc,tids); if (no < nproc) { printf(``erro criar escravo\n``); for (i=0; i<no; i++) pvm_kill(tids[i]); pvm_exit(); exit(1); } strcpy(fn,getenv(``home )); strcat(fn, /pvm3/src/rand_data.txt ); if ((fp=fopen(fn,``r ))==NULL) { printf(``nao posso abrir arquivo %s \n,fn); exit (1); } for (i=0; i<n; i++) fscanf(fp, %d,&data[i]);

Exemplo de programa (trabalhador) #include <stdio.h> #include <pvm3.h> #define PROC 10 #define NELEM 1000 main() { int mytid, tids[proc] int n,me, i,msgtype; int x, nproc,master; int data[nelem],sum; int x, low, high; mytid=pvm_mytid();

Mestre pvm_initsend(pvmdatadefault); msgtype=0; pvm_pkint(&nproc,1,1); pvm_pkint(tids, nproc, 1); pvm_pkint(&n,1,1); pvm_pkint(data, n, 1); pvm_mcast(tids, nproc, type); msgtype = 5; for (i=0; i<nproc; i++) { pvm_recv(-1, msgtype); pvm_upkint(&who, 1, 1); pvm_upkint(&result[who], 1, 1); printf( %d de %d \n,result[who],who); } for (i=0;i<nproc;i++) tot +=result[i]; printf ( O total e %d. \n \n,tot); pvm_exit(); return(0); } Broadcast Recebe resultados trabalhador msgtype=0; pvm_recv(-1,msgtype); pvm_upkint(&nproc,1,1); pvm_upkint(tids, nproc, 1); pvm_upkint(&n, 1,1 ); pvm_upkint(data,,n,1); } for (i=0;i<nproc;i++) if (mytid ==tids[i]) {me=i;break;} x=n/proc; low=me*x; high=low+x; for (i=low;i<high;i++) sum+=data[i]; pvm_initsend(pvmdatadefault); pvm_pkint(&me, 1, 1); pvm_pkint(&sum,1,1); msgtype=5; master=pvm_parent(); pvm_send(master,msgtype); pvm_exit(); return(0);

Sítios internet http://www.epm.ornl.gov/pvm/ http://www.netlib.org/pvm3/ http://www.math.cmu.edu/parallel_cluster/pvm. html