A framework for argument-based task synchronization with automatic detection of dependencies

Carlos H. González, Basilio B. Fraguela
2013 Parallel Computing  
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
more » ... eded 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 Dep-Spawn is very competitive, both in terms of performance and programmability, with respect to a widespread high-level approach like OpenMP.
doi:10.1016/j.parco.2013.04.012 fatcat:muzas3jetbecnjrmqh54sevy7i