PlaCoR: plataforma para a computação orientada ao recurso

Abstract

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

    Similar works