A framework for argument-based task synchronization with automatic detection of dependencies
Use este enlace para citar
http://hdl.handle.net/2183/28974Coleccións
- GI-GAC - Artigos [180]
Metadatos
Mostrar o rexistro completo do ítemTítulo
A framework for argument-based task synchronization with automatic detection of dependenciesData
2013Cita bibliográfica
GONZÁLEZ, Carlos H.; FRAGUELA, Basilio B. A framework for argument-based task synchronization with automatic detection of dependencies. Parallel Computing, 2013, vol. 39, no 9, p. 475-489. https://doi.org/10.1016/j.parco.2013.04.012
Resumo
[Abstract] Synchronization in parallel applications can be achieved either implicitly or explicitly. Implicit synchronization is typical of programming environments that provide predefined, and often simple, patterns of parallelism such as data-parallel libraries and languages and skeletal operations. Nevertheless, more flexible approaches that allow to express arbitrary task-level parallel computations without a predefined structure request in turn that the user explicitly specifies the synchronization needed among the parallel tasks.
In this paper we present a library-based approach that enables arbitrary patterns of parallelism with minimal effort for the user. Our proposal is the first generic approach to express parallelism we know of that requires neither explicit synchronizations nor a detail of the dependencies of the parallel tasks. Our strategy relies on expressing the parallel tasks as functions that convey their dependencies implicitly by means of their arguments. These function arguments are analyzed by our library, called DepSpawn, when a parallel task is spawned in order to enforce its dependencies. Our experiments indicate that DepSpawn is very competitive, both in terms of performance and programmability, with respect to a widespread high-level approach like OpenMP.
Palabras chave
Parallel programming
Synchronization
Out-of-order execution
Libraries
Dependencies
Programming models
Synchronization
Out-of-order execution
Libraries
Dependencies
Programming models