Techniques for reducing and bounding OpenMP dynamic memory

OpenMP is a very convenient programming model to parallelize critical real-time applications for several reasons: (1) it provides a powerful tasking model useful for exploiting unstructured and highly dynamic parallelism; (2) the accelerator model allows for offloading computation from the host to a...

Descripción completa

Detalles Bibliográficos
Autor: Munera Sánchez, Adrián
Tipo de recurso: tesis de maestría
Fecha de publicación:2020
País:España
Institución:Universitat Politècnica de Catalunya (UPC)
Repositorio:UPCommons. Portal del coneixement obert de la UPC
Idioma:inglés
OAI Identifier:oai:upcommons.upc.edu:2117/336102
Acceso en línea:https://hdl.handle.net/2117/336102
Access Level:acceso abierto
Palabra clave:Embedded computer systems
Real-time data processing
OpenMP
memòria dinàmica
sistemes crítics
incrustats
temps real
dynamic memory
critical-systems
embedded
real-time
Sistemes incrustats (Informàtica)
Temps real (Informàtica)
Àrees temàtiques de la UPC::Informàtica
Descripción
Sumario:OpenMP is a very convenient programming model to parallelize critical real-time applications for several reasons: (1) it provides a powerful tasking model useful for exploiting unstructured and highly dynamic parallelism; (2) the accelerator model allows for offloading computation from the host to an accelerator while hiding the complexities of the target architecture; (3) current studies have shown the tasking model is time predictable; (4) current studies have delimited the functional safe aspects of the specification; and (5) it is widely supported by compiler and chip vendors, providing great portability. Despite all the benefits of OpenMP, there are some aspects of the current runtime implementations that makes them unsuitable for critical environments. These are mainly two: (1) tasks are allocated when they are encountered and, as a result, the runtime system makes an intensive use of dynamically allocated memory in order to efficiently manage the parallel execution; and (2) the total amount of memory used is directly proportional to the amount of on-the-fly tasks. These aspects jeopardize the qualification processes needed to ensure that the integrated software stack is compliant with system requirements. This work tackles the previously mentioned limitations with the aim of reducing the gap between OpenMP implementations and critical real-time requirements. Particularly, it proposes a novel OpenMP framework that statically allocates the data structures needed to efficiently manage the parallel execution of OpenMP tasks. The framework is composed of (1) a compiler phase that captures the environment of the OpenMP tasks instantiated along the parallel execution and bounds the amount of memory needed to fully exploit the parallelism exposed in the applications, and (2) a runtime system implementing a lazy task creation policy that significantly reduces the runtime memory requirements, whilst exploiting parallelism efficiently. Furthermore, this work contributes with an evaluation of the framework showing that (1) it achieves the same performance as current OpenMP implementations, while (2) it bounds and drastically reduces the dynamic memory requirements at runtime.