Work-Streaming Compilation of Futures
Résumé
This paper presents a new compilation scheme for futures, a concurrent programming construct used for fine-grained synchronization of parallel computations, that transparently aggregates the resolution of multiple futures. We rely on the results of previous work on the compilation of OpenMP streaming programs, showing that futures represent a special case of streaming tasks. The highly expressive OpenMP streaming paradigm allows to capture any kind of dynamic dependence patterns, in particular where consumers are not necessarily known in advance, as is the case for futures. The work-streaming compilation framework developed for such streaming tasks allows to efficiently compile futures, without a garbage collector. We introduce additional syntactic constructs to the OpenMP language to simplify the expression of futures, and discuss the semantic integration of such constructs in OpenMP and its stream-computing extension.