ECOOP 2015
Sun 5 - Fri 10 July 2015 Prague, Czech Republic
Thu 9 Jul 2015 15:30 - 16:00 at Bohemia - Parallelism Chair(s): Walter Binder

With the ubiquity of multicore and manycore processors in embedded, desktop, and server platforms, there is an urgency to explore robust software solutions to enable parallelism across a wide range of application domains. In this paper, we describe the Eureka Programming Model (EuPM) that simplifies the expression of speculative parallel tasks, and is especially well suited for parallel search and optimization applications. The focus of this work is to provide a clean semantics for, and efficiently support, such “eureka-style” computations (EuSCs) in general structured task parallel programming models that can support functional parallelism, divide-and-conquer parallelism, and loop parallelism. In EuSCs, a eureka event is a point in a program which announces that a result has been found. A eureka triggered by a speculative task can cause a group of related speculative tasks to become redundant, and enable them to be terminated at well-defined program points. Our approach provides a bound on the additional work done in redundant speculative tasks after such a eureka event occurs.

We identify various patterns that are supported by our eureka construct, which include search, optimization, convergence, and soft real-time deadlines. These different patterns of computations can also be safely combined or nested in the EuPM, along with regular task-parallel constructs, thereby enabling high degrees of composability and reusability. The EuPM can also be implemented efficiently, as demonstrated by our implementation based on a cooperative runtime that uses delimited continuations to manage the termination of redundant tasks and their synchronization at join points. In contrast to current approaches, EuPM obviates the need for cumbersome manual refactoring by the programmer that may (for example) require the insertion of if checks and early return statements in every method in the call chain. Experimental results show that solutions using the EuPM simplify programmability, achieve performance comparable to hand-coded speculative task-based solutions, and out-perform non-speculative task-based solutions.