Dissertação de mestrado integrado em Engenharia InformáticaA Plataforma para a Computação orientada ao Recurso (PlaCoR) foi desenhada como um
ambiente de programação e execução de aplicações baseadas no modelo da computação orientada
ao recurso (CoR), especificado em CoRes, integralmente escrito em C++ Moderno.
A escolha do C++ trouxe enormes vantagens, no suporte à: i) programação orientada aos
objetos, através da herança múltipla (na construção dos recursos); ii) programação genérica
(permitindo abstrair na API as diferentes classes de recursos); iii) programação concorrente
(para tirar partido de fios de execução e estruturas de sincronização nativas ao C++).
A plataforma possui facilidades para: i) comunicação inter-domínios, ii) passagem de mensagens
entre recursos comunicantes, iii) memória partilhada distribuída (DSM), iv) ativação
remota de fios de execução (RPC), v) criação e gestão de recursos e vi) gestão da consistência
entre todas as réplicas de um recurso.
Atualmente, o desenho de aplicações CoR assenta nos recursos domínio, grupo, clausura,
agente, proto-agente, dado, barreira, guarda e guarda para leituras/escritas. Os domínios
estabelecem o primeiro nível de concorrência/paralelismo, quer sejam criados no início da
aplicação ou lançados dinamicamente. Os agentes, pelo seu lado, estão associados ao grão
fino de paralelismo e de comunicação por passagem de mensagens.
O domínio, o grupo e a clausura são recursos estruturados que disponibilizam operações
de adesão/saída de recursos; distingue-os o facto dos dois primeiros serem dinâmicos enquanto
a clausura é estática, na medida em que as operações de adesão/saída são coletivas
e o número total de membros é fixado inicialmente - características necessárias para o arranque
paralelo de aplicações do tipo SPMD e a passagem de mensagens intra-clausura.
A guarda é usada para a criação de zonas de exclusão mútua distribuídas (leituras/escritas),
a barreira para a sincronização entre agentes, enquanto o dado contempla os mecanismos
de memória partilhada distribuída, usado para disponibilizar os dados do utilizador num
ambiente de domínios distribuídos.
A avaliação da plataforma tomou como exemplo de aplicação a leitura e processamento
de eventos registados em TTree, recorrentemente usados na experiência ATLAS. As várias
versões desenvolvidas justificaram a criação de um módulo específico, a unidade Pool, que
realiza o modelo fork-join.
O experimento confirmou a viabilidade da orientação ao recurso como paradigma de programação
híbrido que integra múltiplos fios de execução e sincronização distribuída, com
facilidades de comunicação de grão fino para a passagem de mensagens e de comunicação
em contextos seguros, o acesso remoto a memória e a ativação remota de agentes.The Resource-Oriented Computing Platform (PlaCoR) was designed as an application programming
and execution environment based on the resource-oriented computing (CoR)
model, specified in CoRes, fully written in Modern C++.
The choice of C++ brought enormous advantages, in support to: i) object-oriented programming
through multiple inheritance (in the construction of resources); ii) generic programming
(allowing to abstract in the API the different classes of resources); iii) concurrent
programming (to take advantage of run-time threads and synchronization structures native
to C++).
The platform has facilities for: i) inter-domain communication, ii) message passing between
communicating resources, iii) distributed shared memory (DSM), iv) remote activation of
execution threads (RPC), v) creation and management of resources and vi) consistency management
among all replicas of a resource.
Currently, the design of CoR applications relies on the resources domain, group, closure,
agent, proto-agent, data, barrier, guard and read/write guard. The domains establish the
first level of concurrency/parallelism, whether created at the beginning of the application
or dynamically launched. Agents, for their part, are associated with the fine grain of parallelism
and communication by message passing.
The domain, the group and the closure are structured resources that provide join/leave
operations of resources; the first two are dynamic while the closure is static, the later meaning
that the join/leave operations are collective and the total number of members is fixed
initially - characteristics necessary for the parallel start of SPMD-type applications and intraclosure
message passing.
The guard is used to create distributed mutual exclusion zones (read/write), the barrier for
agent synchronization, while the data comprises distributed shared memory mechanisms,
used to make the user’s data available in a distributed domain environment.
The evaluation of the platform took as an application example the reading and processing
of events registered in TTree, recurrently used in the ATLAS experience. The various versions
developed justified the creation of a specific module, the Pool unit, which performs the
fork-join model.
The experiment confirmed the feasibility of resource orientation as a hybrid programming
paradigm that integrates multiple threads of execution and distributed synchronization,
with fine grain communication facilities for message passing and communication in secure
contexts, remote access to memory and remote activation of agents.Este trabalho foi financiado pelo LIP, Laboratório de Instrumentação e Física Experimental de Partículas, através da bolsa de investigação com a referência LIP/BI-16/2018 FCT, COMPETE2020-Portugal2020, FEDER, POCI-01-0145-FEDER-007334, no âmbito do projeto BigData POCI/01-0145-FEDER-029147 PTDC/FIS-PAR/29147/2017, financiado por fundos OE/FCT, Lisboa2020, Compete2020, Portugal 2020, FEDER