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

Computação Paralela com CORBA

  • Upload
    hang

  • View
    27

  • Download
    2

Embed Size (px)

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

Page 1: Computação Paralela com CORBA

Flávia Rainone - [email protected]ávia Rainone - [email protected] 11

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

Page 2: Computação Paralela com CORBA

22 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 3: Computação Paralela com CORBA

33 Flávia Rainone - [email protected]ávia Rainone - [email protected]

Grades ComputacionaisGrades Computacionais

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

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

Page 4: Computação Paralela com CORBA

44 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 5: Computação Paralela com CORBA

55 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 6: Computação Paralela com CORBA

66 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 7: Computação Paralela com CORBA

77 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 8: Computação Paralela com CORBA

88 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 9: Computação Paralela com CORBA

99 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 10: Computação Paralela com CORBA

1010 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 11: Computação Paralela com CORBA

1111 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 12: Computação Paralela com CORBA

1212 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

}; };

Page 13: Computação Paralela com CORBA

1313 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 14: Computação Paralela com CORBA

1414 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 15: Computação Paralela com CORBA

1515 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 16: Computação Paralela com CORBA

1616 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 17: Computação Paralela com CORBA

1717 Flávia Rainone - [email protected]ávia Rainone - [email protected]

ArquiteturaArquitetura

Page 18: Computação Paralela com CORBA

1818 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 19: Computação Paralela com CORBA

1919 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 20: Computação Paralela com CORBA

2020 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 21: Computação Paralela com CORBA

2121 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 22: Computação Paralela com CORBA

2222 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 23: Computação Paralela com CORBA

2323 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 24: Computação Paralela com CORBA

2424 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 25: Computação Paralela com CORBA

2525 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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....”

Page 26: Computação Paralela com CORBA

2626 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.”

Page 27: Computação Paralela com CORBA

2727 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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..

Page 28: Computação Paralela com CORBA

2828 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 29: Computação Paralela com CORBA

2929 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 30: Computação Paralela com CORBA

3030 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 31: Computação Paralela com CORBA

3131 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 32: Computação Paralela com CORBA

3232 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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..

Page 33: Computação Paralela com CORBA

3333 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 34: Computação Paralela com CORBA

3434 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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..

Page 35: Computação Paralela com CORBA

3535 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 36: Computação Paralela com CORBA

3636 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 37: Computação Paralela com CORBA

3737 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 38: Computação Paralela com CORBA

3838 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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()

Page 39: Computação Paralela com CORBA

3939 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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.

Page 40: Computação Paralela com CORBA

4040 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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

Page 41: Computação Paralela com CORBA

4141 Flávia Rainone - [email protected]ávia Rainone - [email protected]

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