410 likes | 521 Views
Computação Paralela com CORBA. Grades Computacionais. Conjunto de computadores ou aglomerados ( clusters ) geograficamente separados que compartilham aplicações, dados e recursos computacionais.
E N D
Computação Paralela com CORBA Flá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. Flávia Rainone - flaviarnn@yahoo.com
Grades Computacionais • Programação distribuída: • Transparência • Interoperabilidade • Confiabilidade • Programação paralela: • Desempenho • Escalabilidade Flá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. Flá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. Flá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. Flá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. Flá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. Flávia Rainone - flaviarnn@yahoo.com
SPMD SPMD SPMD SPMD SPMD SPMD Esqueleto POA Utilizando o modelo SPMD Supercomputador Computador A Camada de Comunicação MPI Especificação de IDL para código paralelo baseado em MPI Processo MPI mestre Cliente Compilador de IDL Stub Processos MPI escravos ORB CORBA Flávia Rainone - flaviarnn@yahoo.com
Objeto Paralelo CORBA SPMD SPMD SPMD SPMD Esqueleto Esqueleto Esqueleto Esqueleto POA Paralelo POA Paralelo POA Paralelo POA Paralelo Utilizando o modelo SPMD Supercomputador Computador A Especificação de IDL para código paralelo baseado em MPI Camada de Comunicação MPI Cliente Compilador de IDL Stub ORB CORBA Flá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. Flá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 ); }; Flá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 Flávia Rainone - flaviarnn@yahoo.com
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. Flávia Rainone - flaviarnn@yahoo.com
Componentes do PARDIS • Compilador IDL. • 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. Flávia Rainone - flaviarnn@yahoo.com
Cliente / Servidor • Servidores Paralelos • 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. • clientes SPMD. • clientes singulares. Flávia Rainone - flaviarnn@yahoo.com
Arquitetura Flávia Rainone - flaviarnn@yahoo.com
cliente servidor cliente servidor 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. Flá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. Flá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 • field da biblioteca POOMA • Tentativa frustrante: falta de suporte a estruturas de dados aninhadas e de tamanho variável Flá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. Flá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. Flá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. Flá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. Flá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....” Flá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.” Flávia Rainone - flaviarnn@yahoo.com
Nomenclatura • Objetos-parte: • partes de um 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. • Cliente paralelo e cliente singular. Flávia Rainone - flaviarnn@yahoo.com
Particionamento dos Dados • Distribuição: • em blocos. • cíclica. • Overlap • Restrições de módulo. • Restrições de mínimo. Flá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) • Mais do que uma requisição para um (ou mais) objeto(s)-parte. • Associada ao particionamento dos dados. Flávia Rainone - flaviarnn@yahoo.com
Parte 2 Parte 1 Parte 2 Parte 3 Parte 4 Parte 3 Parte 1 Proxy para Objeto Paralelo A ... ... Operações em ObjetosParalelos Objeto Paralelo A Objeto Paralelo B X Cliente em um ORB Paralelo Clientes invocando operação X no objeto paralelo A X Y 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 Cliente em um ORB Não-Paralelo Flávia Rainone - flaviarnn@yahoo.com
Interações com Objetos Paralelos • Cliente • Faz requisições ao objeto paralelo. • Servidor • Recebe as requisições. • Criador • Cria o objeto paralelo. • Independente de cliente e de servidor. Flávia Rainone - flaviarnn@yahoo.com
POM: Parallel Object Manager • Componente central da especificação. • Parte do módulo PortableGroup. • Estende: • GenericFactory • PropertyManager • ObjectGroupManager. Flá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_APP_CTRL Flávia Rainone - flaviarnn@yahoo.com
MembershipStyle • MEMB_INF_CTRL • Gerenciamento feito pelo POM. • 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. Flávia Rainone - flaviarnn@yahoo.com
MembershipStyle • MEMB_APP_CTRL • 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. • Utiliza get_object_group_ref para indicar à qual instância de objeto paralelo o objeto-parte pertence. Flá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. • 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”. • Agentes também são fornecidos pelo POM Flávia Rainone - flaviarnn@yahoo.com
1 Parallel Object Manager (POM) 2 create reference create reference create reference 3 Object Adapter Object Adapter Object Adapter Part Factory Part Factory Part Factory Localização 2 Localização 1 Localização 3 Criação Top-Down create_object(location, type) Cliente criando objeto paralelo proxy ? agent? create_object Flávia Rainone - flaviarnn@yahoo.com
Parallel Object Manager (POM) Parte 3 Parte 2 Parte 1 PartServer criando partes PartServer criando partes PartServer criando partes create reference create reference create reference create servant create servant create servant Object Adapter Object Adapter Object Adapter Localização 2 Localização 1 Localização 3 Criação Bottom-Up create_object() Cliente criando objeto paralelo proxy ? agent? add_member() Flá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: • particionamento de dados • distribuição de requisição • Igual para todos os objetos-parte. Flávia Rainone - flaviarnn@yahoo.com
Referências • PaCO, 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_print.htm Flávia Rainone - flaviarnn@yahoo.com
Referências • “PARDIS”, http://www.cs.indiana.edu/~kksiazek/pardis.html • “Data Parallel CORBA Specification”, http://www.omg.org/docs/ptc/01-11-09.pdf Flávia Rainone - flaviarnn@yahoo.com