• Nenhum resultado encontrado

2.5 Computação de Alto Desempenho Baseada em Componentes (CBHPC)

2.5.3 O Modelo Hash de Componentes

No contexto das pesquisas do grupo ao qual faz parte o autor, o modelo de componen- tes Hash (CARVALHO-JUNIOR; LINS, 2005; CARVALHO-JUNIOR et al., 2007; CARVALHO- JUNIOR; LINS, 2008) tem sido proposto desde as pesquisas com a linguagem Haskell# (CARVALHO-JUNIOR; LINS, 2003), uma extensão paralela para a linguagem Haskell (THOMP- SON, 1996) voltada a plataformas de cluster computing (BAKER et al., 1999). O modelo Hash tem como principal característica o suporte inerente a componentes paralelos, voltados a implan- tação, composição e execução em plataformas de computação paralela de memória distribuída, o que permite a separação de interesses de paralelismo dos interesses de negócio dos componentes 33 Architecture Description Languages.

que formam uma aplicação (CARVALHO-JUNIOR; LINS, 2005).

O modelo Hash foi concebido para o desenvolvimento orientado a componentes de programas paralelos, ou seja, a partir da composição de componentes capazes de encapsular interesses de paralelismo (CARVALHO-JUNIOR; LINS, 2005). Devido ao seu foco em compu- tação paralela, enquadra-se dentre os modelos de componentes voltados a CBHPC, discutidos na Seção 2.5. Entretanto, merece destaque especial pois os componentes da HPC Shelf o tomam por base para representar interesses de paralelismo.

Um sistema de programação que é compatível com o modelo Hash deve implementar os seguintes conceitos:

• unidades;

• composição por sobreposição; • espécies de componentes.

2.5.3.1 Unidades

Ao contrário de outros modelos de componentes voltados a HPC, os componentes do modelo Hash são inerentemente paralelos, bem como totalmente expressivos para expressar interesses de processamento paralelo, incluindo interesses funcionais, como algoritmos paralelos, e não-funcionais, tais como plataformas de computação paralela, estratégias de paralelismo, topologias de processos, etc. Para isso, um componente Hash é constituído por um regimento de unidades, associadas aos nós de processamento de uma plataforma de computação paralela de memória distribuída. Unidades comunicam-se através de interfaces de comunicação e sincroni- zação de memória distribuída, tipicamente através de passagem de mensagens. Dessa forma, um componente do modelo Hash é capaz de encapsular as preocupações inerentes da computação paralela. Essa abordagem torna possível que desenvolvedores de software com requisitos de HPC possam preocupar-se somente com as questões do interesse do componente, abstraindo-se das preocupações de paralelismo, desde que reusem componentes pré-existentes, supostamente capazes de tirar o melhor proveito das características da plataforma de computação paralela alvo para obter melhor desempenho, desenvolvidos por especialistas terceiros.

2.5.3.2 Composição por Sobreposição

Um componente do modelo Hash pode ser definido pela orquestração de outros componentes dos quais depende para realizar o seu interesse, de maneira hierárquica e recursiva,

análoga ao modelo Fractal, num processo de composição chamado de sobreposição (overlapping composition) (CARVALHO-JUNIOR; LINS, 2008). Na composição por sobreposição, as unida- des de componentes aninhados, dos quais depende o componente em construção para realizar seu interesse, são mapeados às unidades do próprio componente em construção. Formalmente, a sobreposição pode ser definida por uma função injetora (overlapping function) que mapeia as unidades dos componentes aninhados às unidades do componente sendo construído. Nesse con- texto, dizemos que as unidades dos componentes aninhados (elementos do domínio) mapeados a uma unidade do componente em construção são fatias dessa unidade.

Na Figura 1, é mostrado um processo de composição por sobreposição, onde os com- ponentes são representados por elipses rotuladas por A, B, C e D, e as unidades são representadas por retângulos. O componente A, nesse exemplo, possui três componentes aninhados B, C e D, dos quais depende para realizar o seu interesse, e quatro unidades que tem como fatias unidades desses componentes aninhados.

Figura 1 – Composição por sobreposição

Fonte: Próprio Autor

2.5.3.3 Espécies de Componentes

O modelo Hash não define a natureza concreta de um componente paralelo, podendo ser visto como um metamodelo comparado a outros modelos de componentes. A definição da natureza concreta de um componente Hash é feita através dos sistemas de programação Hash. Para tanto, devem ser definidas espécies de componentes apropriadas ao ambiente de computação alvo, associadas a requisitos de um certo nicho de aplicação. Uma espécie de componentes agrupa componentes Hash que possuem a mesma natureza, tendo em comum apenas o fato de

serem constituídos de unidades distribuídas e compostos entre si por sobreposição. Além disso, componentes Hash de uma mesma espécie possuem o mesmo modelo de implantação em uma arquitetura como também as mesmas restrições de composição com outros componentes Hash. Uma plataforma baseada em componentes Hash pode ainda introduzir novas espécies sem alterar o seu modelo de componentes.

Espécies de componentes podem ser usadas para representar abstrações, do domínio de uma aplicação, que são usadas para especificar problemas e/ou soluções computacionais (para problemas). Nesse sentido, um sistema de programação Hash pode ser visto como uma linguagem de domínio específico (DSL34), onde os componentes, de naturezas diferentes distinguidas nas espécies suportadas, constituem as unidades de composição de “programas”, os quais representam problemas (visão declarativa) ou soluções computacionais para problemas (visão imperativa).

Em geral, plataformas de componentes de modelos tradicionais estão associadas a uma única espécie de componente e um único tipo de conector entre eles, onde a noção de conector é distinta da noção de componente. Associados ao modelo, define-se um conjunto de abstrações para representar interesses que não podem ser capturados pela noção canônica de componentes. Novas abstrações e conectores podem ser introduzidos para satisfazer requisitos de novas plataformas e ambientes de computação. Exemplos disso são as membranas, contro- ladores e portas coletivas do Fractal, bem como os regimentos de componentes do modelo de programação paralela SCMD35 de frameworks CCA. No caso do Fractal, controladores e alguns tipos de portas coletivas passaram a ser vistos também como componentes no GCM, reforçando a ideia do modelo Hash de suportar várias espécies de componentes que podem evoluir com o tempo, de maneira homogênea.