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...
| Autor: | |
|---|---|
| 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 |
| 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. |
|---|