Synthesising and Verifying Multi-Core Parallelism in Categories of Nested Code Graphs

We present the Multi-Core layer of the larger Coconut project to support high-performance, high-assurance scientific computation. Programs are represented by nested code graphs, using domain specific languages. At the Multi-Core level, the language is very restricted, in order to restrict control flow to nonbranching, synchronising control flow, which allows us to treat multi-core parallelism in essentially the same way as instruction-level parallelism for pipelined multi-issue processors. The resulting schedule is then presented as a “locally sequential program”, which, like high-quality conventional assembly code in the single-core case, is arranged for hiding latencies at execution time so that peak performance can be reached, and can also be understood by programmers. We present an efficient, incremental algorithm capable of verifying the soundness of the communication aspects of such programs.

[1]  Peter S. Pacheco Parallel programming with MPI , 1996 .

[2]  Ralf Lämmel,et al.  Google's MapReduce programming model - Revisited , 2007, Sci. Comput. Program..

[3]  Dan Nagle,et al.  MPI -- The Complete Reference, Vol. 1, The MPI Core, 2nd ed., Scientific and Engineering Computation Series, by Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker and Jack Dongarra , 2005 .

[4]  Christopher Kumar,et al.  A Domain-Specific Language for the Generation of Optimized SIMD-Parallel Assembly Code , 2007 .

[5]  Reiko Heckel,et al.  Algebraic Approaches to Graph Transformation - Part I: Basic Concepts and Double Pushout Approach , 1997, Handbook of Graph Grammars.

[6]  E. Allen Emerson,et al.  Temporal and Modal Logic , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[7]  Rosa M. Badia,et al.  CellSs: a Programming Model for the Cell BE Architecture , 2006, ACM/IEEE SC 2006 Conference (SC'06).

[8]  Stefano Leonardi,et al.  Approximating total flow time on parallel machines , 1997, STOC '97.

[9]  Vladimiro Sassone,et al.  On the Algebraic Structure of Petri Nets , 2000, Bull. EATCS.

[10]  Fabio Gadducci,et al.  An Algebraic Presentation of Term Graphs, via GS-Monoidal Categories , 1999, Appl. Categorical Struct..

[11]  Berthold Hoffmann,et al.  Jungle Evaluation for Efficient Term Rewriting , 1988, ALP.

[12]  Nectarios Koziris,et al.  Automatic parallel code generation for tiled nested loops , 2004, SAC '04.

[13]  Cristian S. Calude,et al.  Discrete Mathematics and Theoretical Computer Science , 2003, Lecture Notes in Computer Science.

[14]  M. J. Plasmeijer,et al.  Term graph rewriting: theory and practice , 1993 .

[15]  Fabio Gadducci,et al.  Axioms for Contextual Net Processes , 1998, ICALP.

[16]  Patrice Godefroid,et al.  Dynamic partial-order reduction for model checking software , 2005, POPL '05.

[17]  Paul Hudak,et al.  Modular domain specific languages and tools , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[18]  Jacques Carette,et al.  Control-Flow Semantics for Assembly-Level Data-Flow Graphs , 2005, RelMiCS.

[19]  Roberto Bruni,et al.  Functorial Models for Petri Nets , 2001, Inf. Comput..

[20]  Sanjay Ghemawat,et al.  MapReduce: simplified data processing on large clusters , 2008, CACM.

[21]  Patrice Godefroid,et al.  Partial-Order Methods for the Verification of Concurrent Systems , 1996, Lecture Notes in Computer Science.

[22]  Jan Willem Klop,et al.  Term Graph Rewriting , 1995, HOA.

[23]  Martin Hopkins,et al.  Synergistic Processing in Cell's Multicore Architecture , 2006, IEEE Micro.

[24]  Germán Vidal,et al.  An Operational Semantics for Declarative Multi-Paradigm Languages , 2002, WRS.

[25]  Marc Frappier,et al.  A Relational Calculus for Program Construction by Parts , 1996, Sci. Comput. Program..

[26]  Christopher Kumar Anand,et al.  MultiLoop: efficient software pipelining for modern hardware , 2007, CASCON.

[27]  Antoni W. Mazurkiewicz,et al.  Trace Theory , 1986, Advances in Petri Nets.

[28]  Arie van Deursen,et al.  Little languages: little maintenance , 1998 .

[29]  Fabio Gadducci,et al.  Inequational Deduction as Term Graph Rewriting , 2007, TERMGRAPH.

[30]  Christopher Kumar Anand,et al.  Code Graph Transformations for Verifiable Generation of SIMD-Parallel Assembly Code , 2007, AGTIVE.

[31]  Wolfram Kahl The Term Graph Programming System HOPS , 1998, Tool Support for System Specification, Development and Verification.

[32]  Nectarios Koziris,et al.  Automatic code generation for executing tiled nested loops onto parallel architectures , 2002, SAC '02.

[33]  Germán Vidal,et al.  Operational semantics for declarative multi-paradigm languages , 2005, J. Symb. Comput..

[34]  Fabio Gadducci,et al.  Term Graph Syntax for Multi-Algebras , 2000 .

[35]  Wolfgang Thomas,et al.  Handbook of Theoretical Computer Science, Volume B: Formal Models and Semantics , 1990 .

[36]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.