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

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

Flávia Rainone - 1 Computação Paralela com CORBA.

Apresentações semelhantes


Apresentação em tema: "Flávia Rainone - 1 Computação Paralela com CORBA."— Transcrição da apresentação:

1 Flávia Rainone - flaviarnn@yahoo.com 1 Computação Paralela com CORBA

2 2Flávia Rainone - flaviarnn@yahoo.com Grades Computacionais Conjunto de computadores ou aglomerados (clusters) geograficamente separados que compartilham aplicações, dados e recursos computacionais. Nova infra-estrutura que cria espaço para novos tipos de aplicações de alta performance para as quais as práticas de programação atuais não são apropriadas.

3 3Flávia Rainone - flaviarnn@yahoo.com Grades Computacionais Programação distribuída: Transparência Transparência Interoperabilidade Interoperabilidade Confiabilidade Confiabilidade Programação paralela: Desempenho Desempenho Escalabilidade Escalabilidade

4 4Flávia Rainone - flaviarnn@yahoo.com Como programar em grade? Bibliotecas de envio de mensagens ou memória compartilhada. Chamadas de procedimentos remotos (RPC) e objetos distribuídos. Misturar técnicas de programação paralela com programação distribuída.

5 5Flávia Rainone - flaviarnn@yahoo.com Casos de Estudo PaCO (Parallel CORBA Object) PARDIS (PARallel DIStributed application) Data Parallel CORBA Specification Adaptar especificação de CORBA para fornecer suporte à programação paralela.

6 6Flávia Rainone - flaviarnn@yahoo.com PaCO Parallel CORBA Object. IRISA – “Institut de Recherch en Informatique et Systèmes Aléatoires” Obter simulações de alta performance, através de grades computacionais, utilizando código projetado para executar em sistemas paralelos.

7 7Flávia Rainone - flaviarnn@yahoo.com Por que CORBA? CORBA age como um middleware. Um Object Request Broker (ORB) manipula invocações remotas de métodos especificados em uma IDL. CORBA pode ser utilizado para “juntar” as partes do código de alta performance.

8 8Flávia Rainone - flaviarnn@yahoo.com O modelo SPMD Único código de processo roda em todos os nós do sistema paralelo. Numa grade utilizando CORBA é necessário escolher um processo SPMD para encapsulá-lo dentro de um objeto CORBA. O processo “mestre” se comunica com os outros através de uma camada de comunicação.

9 9Flávia Rainone - flaviarnn@yahoo.com Utilizando o modelo SPMD Camada de Comunicação MPI SPMD POA Especificação de IDL para código paralelo baseado em MPI Compilador de IDL Cliente Stub Processos MPI escravos Processo MPI mestre ORB CORBA Supercomputador Computador A Esqueleto SPMD

10 10Flávia Rainone - flaviarnn@yahoo.com Utilizando o modelo SPMD Especificação de IDL para código paralelo baseado em MPI Compilador de IDL Cliente Stub ORB CORBA Supercomputador Computador A Camada de Comunicação MPI SPMD POA Paralelo Esqueleto SPMD POA Paralelo Esqueleto SPMD POA Paralelo Esqueleto SPMD POA Paralelo Esqueleto Objeto Paralelo CORBA

11 11Flávia Rainone - flaviarnn@yahoo.com Objeto Paralelo CORBA Aparece para o cliente como um objeto CORBA normal. Garantia de conexão escalável entre dois objetos paralelos CORBA. O ORB é responsável pela redistribuição de dados entre dois objetos paralelos CORBA. Alteração da IDL.

12 12Flávia Rainone - flaviarnn@yahoo.com IDL Estendida interface[*] MatrixOperations { const long SIZE=100; typedef double Vector[SIZE]; typedef double Matrix[SIZE][SIZE]; void multiply( in dist[BLOCK][*] Matrix A, in Vector B, out dist[BLOCK] Vector C ); };

13 13Flávia Rainone - flaviarnn@yahoo.com PARDIS PArallel DIStributed application Indiana University Duas publicações em 1997. Estender CORBA para dar suporte a objetos SPMD que representam computações paralelas. Objeto Paralelo CORBA = Objeto SPMD

14 14Flávia Rainone - flaviarnn@yahoo.com Objeto SPMD Objeto SPMD O ORB interage diretamente com as fontes distribuídas da aplicação paralela. Entrega de pedidos para todos os processos que executam numa aplicação paralela. Transferência de argumentos diretamente entre os processos do cliente e do servidor.

15 15Flávia Rainone - flaviarnn@yahoo.com Componentes do PARDIS Compilador IDL. novo tipo de dados: a seqüência distribuída novo tipo de dados: a seqüência distribuída Object Request Broker (ORB). Bibliotecas de comunicação. Repositório de objetos e implementações. Alocação e ativação de objetos.

16 16Flávia Rainone - flaviarnn@yahoo.com Cliente / Servidor Servidores Paralelos programas que provêem a implementação de um ou mais objetos SPMD. programas que provêem a implementação de um ou mais objetos SPMD. Clientes Paralelos programas formados de um ou mais processos que fazem requisições para objetos SPMD. programas formados de um ou mais processos que fazem requisições para objetos SPMD. clientes SPMD. clientes SPMD. clientes singulares. clientes singulares.

17 17Flávia Rainone - flaviarnn@yahoo.com Arquitetura

18 18Flávia Rainone - flaviarnn@yahoo.com Transferência de Argumentos Transferência de argumentos centralizada: apenas uma conexão de rede para clientes. Transferência de argumentos multi-porta: cada processo do objeto SPMD abre uma conexão em uma porta diferente. clienteservidorclienteservidor

19 19Flávia Rainone - flaviarnn@yahoo.com Como funciona? Os objetos são criados nos servidores. A criação de um objeto SPMD é coletiva em relação às processos que estiverem executando no servidor. Os clientes devem se associar ao proxy (de forma coletiva ou singular) Distribuição de argumentos através da seqüência distribuída.

20 20Flávia Rainone - flaviarnn@yahoo.com Mapeamento de Seqüências Estruturas definidas pelo PARDIS Possibilidade de mapear definições de IDL do PARDIS diretamente para estruturas de dados nativas a pacotes concretos: vetor distribuído do HPC++ PSTL vetor distribuído do HPC++ PSTL field da biblioteca POOMA field da biblioteca POOMA Tentativa frustrante: falta de suporte a estruturas de dados aninhadas e de tamanho variável

21 21Flávia Rainone - flaviarnn@yahoo.com Data Parallel CORBA Specification Especificação CORBA de Dados Paralelos. Adotada em Novembro, 2001. Permitir execução de programas com dados paralelos. Não cobre paralelismo com pipeline e paralelismo funcional.

22 22Flávia Rainone - flaviarnn@yahoo.com Objetivos Suportar de modo eficiente a distribuição de dados entre processos leves (threads) que agem paralelamente nesses dados. Atingir desempenho e escalabilidade de sistemas paralelos.

23 23Flávia Rainone - flaviarnn@yahoo.com Objetivos Esforço em manter o modelo de objetos, interoperabilidade e a transparência existente em CORBA. Não altera a IDL.

24 24Flávia Rainone - flaviarnn@yahoo.com Nomenclatura ORBs paralelos: ORBs que suportam a especificação. Objetos paralelos: formados por objetos que processam os dados paralelos. Objetos singulares: objetos CORBA comuns.

25 25Flávia Rainone - flaviarnn@yahoo.com Objetos Paralelos “Objetos paralelos são aqueles cujas requisições são atendidas por uma ou mais ‘partes’, provavelmente, mas não necessariamente, executando concorrentemente em diferentes contextos de execução....”

26 26Flávia Rainone - flaviarnn@yahoo.com Objetos Paralelos “... Assim, o processamento de um pedido feito a um objeto paralelo é executado em paralelo, em múltiplos contextos de execução. A implementação é feita de tal forma que aspectos diferentes do processamento em uma única requisição pode ser feito em partes, em paralelo.”

27 27Flávia Rainone - flaviarnn@yahoo.com Nomenclatura Objetos-parte: partes de um objeto paralelo partes de um objeto paralelo trabalham em conjunto para resolver em paralelo os pedidos feitos ao objeto paralelo. trabalham em conjunto para resolver em paralelo os pedidos feitos ao objeto paralelo. precisam ter a mesma interface, mas não a mesma implementação ou os mesmos dados. precisam ter a mesma interface, mas não a mesma implementação ou os mesmos dados. Cliente paralelo e cliente singular.

28 28Flávia Rainone - flaviarnn@yahoo.com Particionamento dos Dados Distribuição: em blocos. em blocos. cíclica. cíclica.Overlap Restrições de módulo. Restrições de mínimo.

29 29Flávia Rainone - flaviarnn@yahoo.com Distribuição de Requisições Simplesmente “paralela” (uma invocação em um objeto paralelo resulta em uma invocação para cada objeto-parte). Distribuições dinâmicas: Balanceamento de carga (Load Balancing) Balanceamento de carga (Load Balancing) Mais do que uma requisição para um (ou mais) objeto(s)-parte. Mais do que uma requisição para um (ou mais) objeto(s)-parte. Associada ao particionamento dos dados.

30 30Flávia Rainone - flaviarnn@yahoo.com Operações em Objetos Paralelos Parte 1 Parte 2 Parte 3 Parte 4... Parte 1 Parte 2 Parte 3... Proxy para Objeto Paralelo A Cliente em um ORB Paralelo Cliente em um ORB Não- Paralelo Objeto Paralelo AObjeto Paralelo B X X Y Clientes invocando operação X no objeto paralelo A Durante execução da operação X, as partes do objeto paralelo A fazem uma invocação coletiva da operação Y no objeto B

31 31Flávia Rainone - flaviarnn@yahoo.com Interações com Objetos Paralelos Cliente Faz requisições ao objeto paralelo. Faz requisições ao objeto paralelo.Servidor Recebe as requisições. Recebe as requisições.Criador Cria o objeto paralelo. Cria o objeto paralelo. Independente de cliente e de servidor. Independente de cliente e de servidor.

32 32Flávia Rainone - flaviarnn@yahoo.com POM: Parallel Object Manager Componente central da especificação. Parte do módulo PortableGroup. Estende: GenericFactory GenericFactory PropertyManager PropertyManager ObjectGroupManager. ObjectGroupManager.

33 33Flávia Rainone - flaviarnn@yahoo.com POM: Parallel Object Manager Definir o número de objetos-parte na criação de um objeto paralelo. Definir estilo de criação através da propriedade org.omg.pg.MembershipStyle, do tipo MembershipStyleValue MEMB_INF_CTRL MEMB_INF_CTRL MEMB_APP_CTRL MEMB_APP_CTRL

34 34Flávia Rainone - flaviarnn@yahoo.com MembershipStyle MEMB_INF_CTRL Gerenciamento feito pelo POM. Gerenciamento feito pelo POM. Localização das partes é armazenada em uma seqüência de FactoryInfo. Localização das partes é armazenada em uma seqüência de FactoryInfo. Informa o ORB do objeto paralelo que cada parte representa através de _DP_set_whole. Informa o ORB do objeto paralelo que cada parte representa através de _DP_set_whole.

35 35Flávia Rainone - flaviarnn@yahoo.com MembershipStyle MEMB_APP_CTRL A aplicação gerencia a criação de objetos paralelos. A aplicação gerencia a criação de objetos paralelos. Informa o POM da localização dos objetos- parte criados através de add_member ou create_member. Informa o POM da localização dos objetos- parte criados através de add_member ou create_member. Utiliza get_object_group_ref para indicar à qual instância de objeto paralelo o objeto- parte pertence. Utiliza get_object_group_ref para indicar à qual instância de objeto paralelo o objeto- parte pertence.

36 36Flávia Rainone - flaviarnn@yahoo.com Interoperabilidade Cliente em um ORB não-paralelo: O objeto paralelo é representado para o cliente como um proxy provido pelo servidor, através do qual o cliente faz requisições. O objeto paralelo é representado para o cliente como um proxy provido pelo servidor, através do qual o cliente faz requisições. Proxies paralelos são providos pelo POM. Proxies paralelos são providos pelo POM. Cliente em um ORB paralelo: Obter todos os dados do objeto paralelo através de um “Agente Paralelo”. Obter todos os dados do objeto paralelo através de um “Agente Paralelo”. Agentes também são fornecidos pelo POM Agentes também são fornecidos pelo POM

37 37Flávia Rainone - flaviarnn@yahoo.com Criação Top-Down Object Adapter Part Factory create reference Localização 1 Object Adapter Part Factory create reference Localização 2 Object Adapter Part Factory create reference Localização 3 create_object Parallel Object Manager (POM) Cliente criando objeto paralelo create_object(location, type) proxy ? agent? 2 3 1

38 38Flávia Rainone - flaviarnn@yahoo.com Criação Bottom-Up Parallel Object Manager (POM) Cliente criando objeto paralelo Object Adapter PartServer criando partes create reference Localização 1 Parte 1 create servant Object Adapter PartServer criando partes create reference Localização 2 Parte 2 create servant Object Adapter PartServer criando partes create reference Localização 3 Parte 3 create servant create_object() proxy ? agent? add_member()

39 39Flávia Rainone - flaviarnn@yahoo.com Parallel-Data POA Suporte a configurações inerentes a programação com dados paralelos. Interface ParallelBehaviour Descreve para cada operação não default: Descreve para cada operação não default: particionamento de dados distribuição de requisição Igual para todos os objetos-parte. Igual para todos os objetos-parte.

40 40Flávia Rainone - flaviarnn@yahoo.com Referências PaCO, http://www.irisa.fr/paris/Paco/welcome.htm http://www.irisa.fr/paris/Paco/welcome.htm “Parallel CORBA Objects for Programming Computational Grids”, Alexandre Denis, Christian Pérez, Thierry Priol e André Ribes, http://dsonline.computer.org/0302/f/pri_pri nt.htm http://dsonline.computer.org/0302/f/pri_pri nt.htm http://dsonline.computer.org/0302/f/pri_pri nt.htm

41 41Flávia Rainone - flaviarnn@yahoo.com Referências “PARDIS”, http://www.cs.indiana.edu/~kksiazek/pardi s.html http://www.cs.indiana.edu/~kksiazek/pardi s.html http://www.cs.indiana.edu/~kksiazek/pardi s.html “Data Parallel CORBA Specification”, http://www.omg.org/docs/ptc/01-11-09.pdf http://www.omg.org/docs/ptc/01-11-09.pdf


Carregar ppt "Flávia Rainone - 1 Computação Paralela com CORBA."

Apresentações semelhantes


Anúncios Google