Synchronization via scheduling: techniques for efficiently managing shared state

Shared state access conflicts are one of the greatest sources of error for fine grained parallelism in any domain. Notoriously hard to debug, these conflicts reduce reliability and increase development time. The standard task graph model dictates that tasks with potential conflicting accesses to shared state must be linked by a dependency, even if there is no explicit logical ordering on their execution. In cases where it is difficult to understand if such implicit dependencies exist, the programmer often creates more dependencies than needed, which results in constrained graphs with large monolithic tasks and limited parallelism. We propose a new technique, Synchronization via Scheduling (SvS), that uses the results of static and dynamic code analysis to manage potential shared state conflicts by exposing the data accesses of each task to the scheduler. We present an in-depth performance analysis of SvS via examples from video games, our target domain, and show that SvS performs well in comparison to software transactional memory (TM) and fine grained mutexes.

[1]  Brian Demsky,et al.  Disjointness Analysis for Java-Like Languages , 2009 .

[2]  Kai Li,et al.  The PARSEC benchmark suite: Characterization and architectural implications , 2008, 2008 International Conference on Parallel Architectures and Compilation Techniques (PACT).

[3]  Gregory R. Andrews,et al.  Gossamer: a lightweight programming framework for multicore machines , 2010 .

[4]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[5]  William Pugh,et al.  Constraint-based array dependence analysis , 1998, TOPL.

[6]  Brian Demsky,et al.  OoOJava: an out-of-order approach to parallel programming , 2010 .

[7]  Gurindar S. Sohi,et al.  Serialization sets: a dynamic dependence-based parallel execution model , 2009, PPoPP '09.

[8]  Keshav Pingali,et al.  Scheduling strategies for optimistic parallel execution of irregular programs , 2008, SPAA '08.

[9]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[10]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[11]  Burton H. Bloom,et al.  Space/time trade-offs in hash coding with allowable errors , 1970, CACM.

[12]  Torvald Riegel,et al.  Transactifying Applications Using an Open Compiler Framework , 2007 .

[13]  Mihai Burcea,et al.  Transactional memory support for scalable and transparent parallelization of multiplayer games , 2010, EuroSys '10.

[14]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[15]  Christoforos E. Kozyrakis,et al.  Flexible architectural support for fine-grain scheduling , 2010, ASPLOS XV.

[16]  Deepak Kapur,et al.  Sharing analysis of arrays, collections, and recursive structures , 2008, PASTE '08.

[17]  Monica S. Lam,et al.  The design, implementation, and evaluation of Jade , 1998, TOPL.

[18]  Hsien-Hsin S. Lee,et al.  Adaptive transaction scheduling for transactional memory systems , 2008, SPAA '08.

[19]  Utpal Banerjee,et al.  Dependence analysis for supercomputing , 1988, The Kluwer international series in engineering and computer science.

[20]  Michael McCool,et al.  Structured parallel programming with deterministic patterns , 2010 .