Computação Paralela com CORBA

Preview:

DESCRIPTION

Computação Paralela com CORBA. Grades Computacionais. Conjunto de computadores ou aglomerados ( clusters ) geograficamente separados que compartilham aplicações, dados e recursos computacionais. - PowerPoint PPT Presentation

Citation preview

Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com 11

Computação Paralela Computação Paralela com CORBA com CORBA

22 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Grades ComputacionaisGrades Computacionais

Conjunto de computadores ou Conjunto de computadores ou aglomerados (aglomerados (clustersclusters) geograficamente ) geograficamente separados que compartilham aplicações, separados que compartilham aplicações, dados e recursos computacionais.dados e recursos computacionais.Nova infra-estrutura que cria espaço para Nova infra-estrutura que cria espaço para novos tipos de aplicações de alta novos tipos de aplicações de alta performance para as quais as práticas de performance para as quais as práticas de programação atuais não são apropriadas.programação atuais não são apropriadas.

33 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Grades ComputacionaisGrades Computacionais

Programação distribuída:Programação distribuída: TransparênciaTransparência InteroperabilidadeInteroperabilidade ConfiabilidadeConfiabilidade

Programação paralela:Programação paralela: DesempenhoDesempenho EscalabilidadeEscalabilidade

44 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Como programar em grade?Como programar em grade?

Bibliotecas de envio de mensagens ou Bibliotecas de envio de mensagens ou memória compartilhada.memória compartilhada.

Chamadas de procedimentos remotos Chamadas de procedimentos remotos (RPC) e objetos distribuídos.(RPC) e objetos distribuídos.

Misturar técnicas de programação paralela Misturar técnicas de programação paralela com programação distribuída.com programação distribuída.

55 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Casos de EstudoCasos de Estudo

PaCO (Parallel CORBA Object)PaCO (Parallel CORBA Object)

PARDIS (PARallel DIStributed application)PARDIS (PARallel DIStributed application)

Data Parallel CORBA SpecificationData Parallel CORBA Specification

Adaptar especificação de CORBA para fornecer suporte à programação

paralela.

66 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

PaCOPaCO

Parallel CORBA Object.Parallel CORBA Object.

IRISA – “Institut de Recherch en IRISA – “Institut de Recherch en Informatique et Systèmes Aléatoires”Informatique et Systèmes Aléatoires”

Obter simulações de alta performance, Obter simulações de alta performance, através de grades computacionais, através de grades computacionais, utilizando código projetado para executar utilizando código projetado para executar em sistemas paralelos.em sistemas paralelos.

77 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Por que CORBA?Por que CORBA?

CORBA age como um middleware.CORBA age como um middleware.

Um Um Object Request BrokerObject Request Broker (ORB) (ORB) manipula invocações remotas de métodos manipula invocações remotas de métodos especificados em uma IDL.especificados em uma IDL.

CORBA pode ser utilizado para “juntar” as CORBA pode ser utilizado para “juntar” as partes do código de alta performance.partes do código de alta performance.

88 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

O modelo SPMDO modelo SPMD

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

99 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Utilizando o modelo SPMD 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

SPMD

SPMD

SPMD

SPMD

1010 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Utilizando o modelo SPMD 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

1111 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Objeto Paralelo CORBAObjeto Paralelo CORBA

Aparece para o cliente como um objeto Aparece para o cliente como um objeto CORBA normal.CORBA normal.

Garantia de conexão escalável entre dois Garantia de conexão escalável entre dois objetos paralelos CORBA.objetos paralelos CORBA.

O ORB é responsável pela redistribuição O ORB é responsável pela redistribuição de dados entre dois objetos paralelos de dados entre dois objetos paralelos CORBA.CORBA.

Alteração da IDL.Alteração da IDL.

1212 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

IDL EstendidaIDL Estendida

interface[*] MatrixOperations {interface[*] MatrixOperations {

const long SIZE=100;const long SIZE=100;typedef double Vector[SIZE];typedef double Vector[SIZE];typedef double Matrix[SIZE][SIZE];typedef double Matrix[SIZE][SIZE];

void multiply(void multiply(

in dist[BLOCK][*] Matrix A,in dist[BLOCK][*] Matrix A,

in Vector B, in Vector B, out dist[BLOCK] Vector C );out dist[BLOCK] Vector C );

}; };

1313 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

PARDISPARDIS

PArallel DIStributed applicationPArallel DIStributed application

Indiana UniversityIndiana University

Duas publicações em 1997.Duas publicações em 1997.

Estender CORBA para dar suporte a Estender CORBA para dar suporte a objetos SPMD que representam objetos SPMD que representam computações paralelas.computações paralelas.

Objeto Paralelo CORBA = Objeto SPMDObjeto Paralelo CORBA = Objeto SPMD

1414 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Objeto SPMDObjeto SPMD

O ORB interage diretamente com as O ORB interage diretamente com as fontes distribuídas da aplicação paralela.fontes distribuídas da aplicação paralela.

Entrega de pedidos para todos os Entrega de pedidos para todos os processos que executam numa aplicação processos que executam numa aplicação paralela.paralela.

Transferência de argumentos diretamente Transferência de argumentos diretamente entre os processos do cliente e do entre os processos do cliente e do servidor.servidor.

1515 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Componentes do PARDISComponentes do PARDIS

Compilador IDL.Compilador IDL. novo tipo de dados: a seqüência distribuída novo tipo de dados: a seqüência distribuída

Object Request Broker (ORB).Object Request Broker (ORB).

Bibliotecas de comunicação.Bibliotecas de comunicação.

Repositório de objetos e implementações.Repositório de objetos e implementações.

Alocação e ativação de objetos.Alocação e ativação de objetos.

1616 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Cliente / ServidorCliente / Servidor

Servidores ParalelosServidores Paralelos programas que provêem a implementação de programas que provêem a implementação de

um ou mais objetos SPMD.um ou mais objetos SPMD.

Clientes ParalelosClientes Paralelos programas formados de um ou mais processos programas formados de um ou mais processos

que fazem requisições para objetos SPMD.que fazem requisições para objetos SPMD. clientes SPMD.clientes SPMD. clientes singulares.clientes singulares.

1717 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

ArquiteturaArquitetura

1818 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Transferência de ArgumentosTransferência de Argumentos

Transferência de Transferência de argumentos centralizada: argumentos centralizada: apenas uma conexão de apenas uma conexão de rede para clientes.rede para clientes.

Transferência de Transferência de argumentos multi-porta: argumentos multi-porta: cada processo do objeto cada processo do objeto SPMD abre uma conexão SPMD abre uma conexão em uma porta diferente.em uma porta diferente.

cliente servidor

cliente servidor

1919 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Como funciona?Como funciona?

Os objetos são criados nos servidores.Os objetos são criados nos servidores.

A criação de um objeto SPMD é coletiva A criação de um objeto SPMD é coletiva em relação às processos que estiverem em relação às processos que estiverem executando no servidor.executando no servidor.

Os clientes devem se associar ao proxy Os clientes devem se associar ao proxy (de forma coletiva ou singular)(de forma coletiva ou singular)

Distribuição de argumentos através da Distribuição de argumentos através da seqüência distribuída.seqüência distribuída.

2020 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Mapeamento de SeqüênciasMapeamento de Seqüências

Estruturas definidas pelo PARDISEstruturas definidas pelo PARDISPossibilidade de mapear definições de IDL Possibilidade de mapear definições de IDL do PARDIS diretamente para estruturas do PARDIS diretamente para estruturas de dados nativas a pacotes concretos:de dados nativas a pacotes concretos: vetor distribuído do HPC++ PSTLvetor distribuído do HPC++ PSTL fieldfield da biblioteca POOMA da biblioteca POOMA

Tentativa frustrante: falta de suporte a Tentativa frustrante: falta de suporte a estruturas de dados aninhadas e de estruturas de dados aninhadas e de tamanho variáveltamanho variável

2121 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Data Parallel CORBA SpecificationData Parallel CORBA Specification

Especificação CORBA de Dados Especificação CORBA de Dados Paralelos.Paralelos.

Adotada em Novembro, 2001.Adotada em Novembro, 2001.

Permitir execução de programas com Permitir execução de programas com dados paralelos.dados paralelos.

Não cobre paralelismo com Não cobre paralelismo com pipelinepipeline e e paralelismo funcional.paralelismo funcional.

2222 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

ObjetivosObjetivos

Suportar de modo eficiente a distribuição Suportar de modo eficiente a distribuição de dados entre processos leves (de dados entre processos leves (threadsthreads) ) que agem paralelamente nesses dados.que agem paralelamente nesses dados.

Atingir desempenho e escalabilidade de Atingir desempenho e escalabilidade de sistemas paralelos.sistemas paralelos.

2323 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

ObjetivosObjetivos

Esforço em manter o modelo de objetos, Esforço em manter o modelo de objetos, interoperabilidade e a transparência interoperabilidade e a transparência existente em CORBA.existente em CORBA.

Não altera a IDL.Não altera a IDL.

2424 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

NomenclaturaNomenclatura

ORBs paralelosORBs paralelos: ORBs que suportam a : ORBs que suportam a especificação.especificação.

Objetos paralelosObjetos paralelos: formados por objetos : formados por objetos que processam os dados paralelos.que processam os dados paralelos.

Objetos singularesObjetos singulares: objetos CORBA : objetos CORBA comuns.comuns.

2525 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Objetos ParalelosObjetos Paralelos

““Objetos paralelos são aqueles cujas Objetos paralelos são aqueles cujas requisições são atendidas por uma ou requisições são atendidas por uma ou mais ‘partes’, provavelmente, mas não mais ‘partes’, provavelmente, mas não necessariamente, executando necessariamente, executando concorrentemente em diferentes contextos concorrentemente em diferentes contextos de execução....”de execução....”

2626 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Objetos ParalelosObjetos Paralelos

““... Assim, o processamento de um pedido ... Assim, o processamento de um pedido feito a um objeto paralelo é executado em feito a um objeto paralelo é executado em paralelo, em múltiplos contextos de paralelo, em múltiplos contextos de execução. A implementação é feita de tal execução. A implementação é feita de tal forma que aspectos diferentes do forma que aspectos diferentes do processamento em uma única requisição processamento em uma única requisição pode ser feito em partes, em paralelo.”pode ser feito em partes, em paralelo.”

2727 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

NomenclaturaNomenclatura

Objetos-parteObjetos-parte: : partes de um objeto paralelo partes de um objeto paralelo trabalham em conjunto para resolver em trabalham em conjunto para resolver em

paralelo os pedidos feitos ao paralelo os pedidos feitos ao objeto paraleloobjeto paralelo.. precisam ter a mesma interface, mas não a precisam ter a mesma interface, mas não a

mesma implementação ou os mesmos dados. mesma implementação ou os mesmos dados.

Cliente paraleloCliente paralelo e e cliente singularcliente singular..

2828 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Particionamento dos DadosParticionamento dos Dados

Distribuição:Distribuição: em blocos.em blocos. cíclica.cíclica.

OverlapOverlap

Restrições de módulo.Restrições de módulo.

Restrições de mínimo.Restrições de mínimo.

2929 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Distribuição de RequisiçõesDistribuição de Requisições

Simplesmente “paralela” (uma invocação Simplesmente “paralela” (uma invocação em um objeto paralelo resulta em uma em um objeto paralelo resulta em uma invocação para cada objeto-parte).invocação para cada objeto-parte).

Distribuições dinâmicas:Distribuições dinâmicas: Balanceamento de carga (Balanceamento de carga (Load Balancing)Load Balancing) Mais do que uma requisição para um (ou Mais do que uma requisição para um (ou

mais) objeto(s)-parte.mais) objeto(s)-parte.

Associada ao particionamento dos dados.Associada ao particionamento dos dados.

3030 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Operações em ObjetosOperações em ObjetosParalelosParalelos

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 A Objeto 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

3131 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Interações com Objetos ParalelosInterações com Objetos Paralelos

ClienteCliente Faz requisições ao objeto paralelo.Faz requisições ao objeto paralelo.

ServidorServidor Recebe as requisições.Recebe as requisições.

CriadorCriador Cria o objeto paralelo.Cria o objeto paralelo. Independente de cliente e de servidor.Independente de cliente e de servidor.

3232 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

POM: Parallel Object ManagerPOM: Parallel Object Manager

Componente central da especificação.Componente central da especificação.

Parte do módulo Parte do módulo PortableGroupPortableGroup..

Estende:Estende: GenericFactoryGenericFactory PropertyManagerPropertyManager ObjectGroupManagerObjectGroupManager..

3333 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

POM: Parallel Object ManagerPOM: Parallel Object Manager

Definir o número de objetos-parte na Definir o número de objetos-parte na criação de um objeto paralelo.criação de um objeto paralelo.

Definir estilo de criação através da Definir estilo de criação através da propriedade propriedade org.omg.pg.MembershipStyleorg.omg.pg.MembershipStyle, do , do tipo tipo MembershipStyleValueMembershipStyleValue MEMB_INF_CTRLMEMB_INF_CTRL MEMB_APP_CTRLMEMB_APP_CTRL

3434 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

MembershipStyleMembershipStyle

MEMB_INF_CTRLMEMB_INF_CTRL Gerenciamento feito pelo POM.Gerenciamento feito pelo POM. Localização das partes é armazenada em Localização das partes é armazenada em

uma seqüência de uma seqüência de FactoryInfoFactoryInfo.. Informa o ORB do objeto paralelo que cada Informa o ORB do objeto paralelo que cada

parte representa através de parte representa através de _DP_set_whole_DP_set_whole..

3535 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

MembershipStyleMembershipStyle

MEMB_APP_CTRLMEMB_APP_CTRL A aplicação gerencia a criação de objetos A aplicação gerencia a criação de objetos

paralelos.paralelos. Informa o POM da localização dos objetos-Informa o POM da localização dos objetos-

parte criados através de parte criados através de add_memberadd_member ou ou create_membercreate_member..

Utiliza Utiliza get_object_group_refget_object_group_ref para indicar para indicar à qual instância de objeto paralelo o objeto-à qual instância de objeto paralelo o objeto-parte pertence.parte pertence.

3636 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

InteroperabilidadeInteroperabilidade

Cliente em um ORB não-paralelo:Cliente em um ORB não-paralelo: O objeto paralelo é representado para o O objeto paralelo é representado para o

cliente como um cliente como um proxy proxy provido pelo servidor, provido pelo servidor, através do qual o cliente faz requisições.através do qual o cliente faz requisições.

ProxiesProxies paralelos são providos pelo POM. paralelos são providos pelo POM.

Cliente em um ORB paralelo:Cliente em um ORB paralelo: Obter todos os dados do objeto paralelo Obter todos os dados do objeto paralelo

através de um “Agente Paralelo”.através de um “Agente Paralelo”. Agentes também são fornecidos pelo POMAgentes também são fornecidos pelo POM

3737 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Criação Top-DownCriação Top-Down

ObjectAdapter

PartFactory

create reference

Localização 1

ObjectAdapter

PartFactory

create reference

Localização 2

ObjectAdapter

PartFactory

create reference

Localização 3

create_object

ParallelObject

Manager(POM)

Cliente criando objetoparalelo

create_object(location, type)

proxy ? agent?

2

3

1

3838 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Criação Bottom-UpCriação Bottom-UpParallelObject

Manager(POM)

Cliente criando objetoparalelo

ObjectAdapter

PartServercriando partes

create reference

Localização 1

Parte 1

create servantObject

Adapter

PartServercriando partes

create reference

Localização 2

Parte 2

create servantObject

Adapter

PartServercriando partes

create reference

Localização 3

Parte 3

create servant

create_object()

proxy ? agent?

add_member()

3939 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

Parallel-Data POAParallel-Data POA

Suporte a configurações inerentes a Suporte a configurações inerentes a programação com dados paralelos.programação com dados paralelos.

Interface Interface ParallelBehaviourParallelBehaviour Descreve para cada operação não Descreve para cada operação não defaultdefault::

particionamento de dadosparticionamento de dados

distribuição de requisiçãodistribuição de requisição

Igual para todos os objetos-parte.Igual para todos os objetos-parte.

4040 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

ReferênciasReferências

PaCO, PaCO, http://www.irisa.http://www.irisa.fr/paris/Paco/welcomefr/paris/Paco/welcome..htmhtm

““Parallel CORBA Objects for Programming Parallel CORBA Objects for Programming Computational Grids”, Alexandre Denis, Computational Grids”, Alexandre Denis, Christian Pérez, Thierry Priol e André Christian Pérez, Thierry Priol e André Ribes, Ribes, http://dsonline.computer.org/0302/f/pri_prihttp://dsonline.computer.org/0302/f/pri_print.htmnt.htm

4141 Flávia Rainone - flaviarnn@yahoo.comFlávia Rainone - flaviarnn@yahoo.com

ReferênciasReferências

““PARDIS”, PARDIS”, http://www.http://www.cscs.indiana..indiana.edu/~kksiazek/pardisedu/~kksiazek/pardis..htmlhtml

““Data Parallel CORBA Specification”, Data Parallel CORBA Specification”, http://www.omg.org/docs/ptc/01-11-09.pdfhttp://www.omg.org/docs/ptc/01-11-09.pdf

Recommended