Back to Search Start Over

Automatic aggregation of subtask accesses for nested OpenMP-style tasks

Authors :
Ali, Omar Shaaban Ibrahim
Aguilar Mena, Jimmy
Beltran Querol, Vicenç
Carpenter, Paul Matthew
Ayguadé Parra, Eduard
Labarta Mancho, Jesús José
Universitat Politècnica de Catalunya. Doctorat en Arquitectura de Computadors
Universitat Politècnica de Catalunya. Departament d'Arquitectura de Computadors
Barcelona Supercomputing Center
Universitat Politècnica de Catalunya. PM - Programming Models
Universitat Politècnica de Catalunya. CAP - Grup de Computació d'Altes Prestacions
Source :
2022 IEEE 34th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD).
Publication Year :
2022
Publisher :
IEEE, 2022.

Abstract

Task-based programming is a high performance and productive model to express parallelism. Tasks encapsulate work to be executed across multiple cores or offloaded to GPUs, FPGAs, other accelerators or other nodes. In order to maintain parallelism and afford maximum freedom to the scheduler, the task dependency graph should be created in parallel and well in advance of task execution. A key limitation with OpenMP and OmpSs-2 tasking is that a task cannot be created until all its accesses and its descendents' accesses are known. Current approaches to work around this limitation either stop task creation and execution using a taskwait or they substitute “fake” accesses known as sentinels. This paper proposes the auto clause, which indicates that the task may create subtasks that access unspecified memory regions or it may allocate and return memory at addresses that are of course not yet known. Unlike approaches using taskwaits, there is no interruption to the concurrent creation and execution of tasks, maintaining parallelism and the scheduler's ability to optimize load balance and data locality. Unlike existing approaches using sentinels, all tasks can be given a precise specification of their own data accesses, so that a single mechanism is used to control task ordering, program data transfers on distributed memory and optimize data locality, e.g. on NUMA systems. The auto clause also provides an incremental path to develop programs with nested tasks, by removing the need for every parent task to have a complete specification of the accesses of its descendent tasks. This is redundant information that can be time consuming and error-prone to describe. We present a straightforward runtime implementation that achieves a 1.4 times speedup for n-body with OmpSs-2@Cluster task offloading to 32 nodes and

Details

Database :
OpenAIRE
Journal :
2022 IEEE 34th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)
Accession number :
edsair.doi.dedup.....dd232db6bcdc58f97165b4ca87314b1c