A framework for argument-based task synchronization with automatic detection of dependencies
Use this link to cite
http://hdl.handle.net/2183/28974Collections
- GI-GAC - Artigos [181]
Metadata
Show full item recordTitle
A framework for argument-based task synchronization with automatic detection of dependenciesDate
2013Citation
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
Abstract
[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.
Keywords
Parallel programming
Synchronization
Out-of-order execution
Libraries
Dependencies
Programming models
Synchronization
Out-of-order execution
Libraries
Dependencies
Programming models