Utilize este identificador para referenciar este registo:
https://hdl.handle.net/1822/78237
Título: | CoR-HPX: uma nova abordagem à computação orientada ao recurso |
Autor(es): | Gonçalves, Tiago Fernandes |
Orientador(es): | Pina, António Manuel Silva |
Palavras-chave: | Parallel computing Distributed computing HPX Resource oriented computing Asynchronous many-tasks Computação paralela Computação distribuída Computação orientada ao recurso Muitas-tarefas assíncronas |
Data: | 26-Jul-2021 |
Resumo(s): | In the last few years, an emerging type of development and execution systems, based on asynchronous many-task programming (AMT), has shown enormous potential to address the scalability and efficiency needs of mo-dern scientific parallel applications. Within this scenario, HPX emerges as an alternative to the predominant programming models, representing a combination of ideas such as data flow, futures and CPS (Continuation-passing style), components and actions, through a uniform API with strict compliance to the modern C++ standard, with support for shared memory and distributed memory and accelerators. Resource Oriented Computing (CoR) is a computing model that introduces the metaphor of the resource as a computational entity that incorporates the notion of state, concurrency, locality and distribution, through its common characteristics, evidenced in the triad: i) unique identification in the distributed system ii) coherence among replicas and iii) an instance that is the concrete realization of the resource in the host system. This dissertation introduces the CoR-HPX platform as a new approach to CoR, starting from the establishment of the correspondence between the resource entity and its modeling as an HPX component. It is based on this assumption that we proceed to the design and development of CoR-HPX to address the constraints of the previous PIaCoR platform, namely: (i) execution - adopting the task-centric model instead of the thread-centric model, (ii) replication - adopting a centralized single copy policy instead of distributed replicas, compatible with the possibility of resource migration between domains, (iii) group communication - replacing the spread library with HPX's own synchronization mechanisms, (iv) point-to-point communication - using channels, and (v) API -extending the previous API in order to introduce asynchronous programming and futurization, based on the AMT programming model support. The validation of CoR-HPX was made, in the first place, through the compiling and execution of application examples inherited from the previous platform, having verified that the results obtained faithfully reproduced the ones obtained from PIaCoR. The functionality of new resource classes such as Operon, UniChannel and MultiChannel was also verified. The first one enhances the multitasking execution of functions, according to the fork-join model, while the other two classes use the HPX channels as alternative way to send/receive messages between tasks, supporting simple bidirectional communication modes and predefined topologies. We can say that CoR-HPX brings a higher level of abstraction to HPX programming, by using the different classes of resources as predefined modules that can be easily adapted to any application. For example, the Data resource includes the necessary mechanisms to transform instances of any C++ class, with minimal programmer involvement, into remotely addressable and migrable objects, almost completely hiding the HPX boilerplate code. Thus, the given resource is both a conventional component type (HPX) with state and an object that can be used to execute functions with any signatures, the equivalent of a simple action (HPX). Nos últimos anos, uma classe emergente de sistemas de desenvolvimento e execução, baseados em programa-ção assíncrona de muitas tarefas (AMT), tem vindo a mostrar um enorme potencial para responder às necessi-dades de escalabilidade e eficiência de aplicações paralelas científicas modernas. É neste quadro que surge o HPX, como uma alternativa aos modelos de programação predominantes, que representa uma combinação de ideias tais como: fluxo de dados, futuros e CPS (Continuation-passing style), componentes e ações, através de uma API uniforme com aderência estrita ao padrão C++ moderno, com su-porte para memória partilhada, memória distribuída e aceleradores. A Computação orientada ao Recurso (CoR) é um modelo de computação que introduz a metáfora do Recurso como uma entidade computacional que incorpora a noção de estado, de concorrência, de localidade e de distribuição, através das suas características comuns, evidenciadas na tríade: i) identificação única, no sistema distribuído ü) coerência entre réplicas e iii) instância - realização concreta do Recurso no sistema hospedeiro. Esta dissertação apresenta a plataforma CoR-HPX como uma nova abordagem ao CoR, a partir do estabele-cimento da correspondência entre a entidade Recurso e a sua modelação como um componente HPX. É a partir desta base que se procede ao desenho e realização do CoR-HPX para responder às limitações da plataforma anterior PlaCoR, nomeadamente, no que concerne: a i) execução — adotando o modelo task-centric em detri-mento do modelo thread-centric, ii) replicação — adotando uma política de cópia única centralizada em vez de réplicas distribuídas, compatível com a possibilidade de migração de Recursos entre domínios, iii) comunicação em grupo — substituindo a biblioteca spread por mecanismos de sincronização próprios do HPX, iv) comuni-cação ponto-aponto - usando canais e v) API — estendendo a API anterior de forma a introduzir programação assíncrona e futurização, baseadas no suporte na modelo de programação AMT. A validação da CoR-HPX fez-se, em primeiro lugar, através da compilação e execução de exemplos de apli-cações herdados da plataforma anterior, tendo-se verificado que os resultados obtidos reproduziam fidedigna-mente os obtidos do PlaCoR. Foi igualmente comprovada a funcionalidade de novas classes de Recursos como é o caso do Operon, do UniChannel e do MultiChannel. A primeira, potencia a execução multitarefa de funções, segundo o modelo fork-join, enquanto as outras duas classes usam os canais do HPX, como meios alternativos para o envio/receção de mensagem entre tarefas, dando suporte a modos de comunicação bidirecionais simples e em topologias pré-definidas. Pode também afirmar-se que a CoR-HPX vem acrescentar à programação com HPX um nível superior de abstração, através da utilização das diferentes classes de Recursos como módulos pré-definidos facilmente adaptáveis ao código específico de cada nova aplicação. Tal é o caso do Recurso Dado, que inclui os meca-nismos necessários para, com o envolvimento mínimo do programador, transformar as instâncias de qualquer classe C++, em objetos remotamente endereçáveis e migráveis, ocultando quase completamente o código boi-terplate do HPX. Assim, o Recurso Dado é ao mesmo tempo um tipo de componente (HPX) convencional com estado e um objecto que pode ser usado para executar funções com qualquer assinatura, o equivalente a uma ação simples (HPX). |
Tipo: | Dissertação de mestrado |
Descrição: | Dissertação de Mestrado em Engenharia Informática |
URI: | https://hdl.handle.net/1822/78237 |
Acesso: | Acesso aberto |
Aparece nas coleções: | BUM - Dissertações de Mestrado LIP - Dissertações de Mestrado |
Ficheiros deste registo:
Ficheiro | Descrição | Tamanho | Formato | |
---|---|---|---|---|
Tiago Fernandes Goncalves.pdf | 21,3 MB | Adobe PDF | Ver/Abrir |
Este trabalho está licenciado sob uma Licença Creative Commons