2017 29th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD) (2017)
Campinas, SP, Brazil
Oct. 17, 2017 to Oct. 20, 2017
Task-based programming models aim to simplify parallel programming. A runtime system schedules tasks to execute on cores. An essential component of this runtime is to track and manage dependencies between tasks. A typical approach is to rely on programmers to annotate tasks and data structures, essentially manually specifying the input and output of each task. As such, dependencies are associated with named program objects, making this approach problematic for pointer-based data structures. Furthermore, because the runtime system must track these dependencies, for efficient runtime performance the read and write sets should be kept small. We presume a memory system with architecturally visible support for multiple versions of data stored at the same program address. This paper proposes and evaluates a task-based execution model that uses this versioned memory system to deterministically parallelize sequential code. We have built a task-based runtime layer that uses this type of memory system for dependence tracking. We demonstrate the advantages of the proposed model by parallelizing pointer-heavy code, obtaining speedup of up to 19x on a 32-core system.
data structures, parallel programming, scheduling
E. Gilad, T. Mayzels, E. Raab, M. Oskin and Y. Etsion, "Towards a Deterministic Fine-Grained Task Ordering Using Multi-Versioned Memory," 2017 29th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD), Campinas, SP, Brazil, 2017, pp. 105-112.