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
Flávia Rainone - [email protected]ávia Rainone - [email protected] 11
Computação Paralela Computação Paralela com CORBA 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.
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
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.
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.
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.
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.
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.
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
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
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.
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 );
}; };
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
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.
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.
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.
1717 Flávia Rainone - [email protected]ávia Rainone - [email protected]
ArquiteturaArquitetura
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
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.
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
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.
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.
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.
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.
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....”
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.”
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..
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.
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.
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
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.
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..
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
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..
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.
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
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
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()
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.
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
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