A type system for the automatic distribution of higher-order synchronous dataflow programs

We address the design of distributed systems with synchronous dataflow programming languages. As modular design entails handling both architectural and functional modularity, our first contribution is to extend an existing synchronous dataflow programming language with primitives allowing the description of a distributed architecture and the localization of some expressions onto some processors. We also present a distributed semantics to formalize the distributed execution of synchronous programs. Our second contribution is to provide a type system, in order to infer the localization of non-annotated values by means of type inference and to ensure, at compilation time, the consistency of the distribution. Our third contribution is to provide a type-directed projection operation to obtain automatically, from a centralized typed program, the local program to be executed by each computing resource. The type system as well as the automatic distribution mechanism has been fully implemented in the compiler of an existing synchronous data-flow programming language.

[1]  Peter Thiemann,et al.  From sequential programs to multi-tier applications by program transformation , 2005, POPL '05.

[2]  A. Girault A Survey of Automatic Distribution Method for Synchronous Programs , 2005 .

[3]  Yves Sorel SynDEx : System-Level CAD Software for Optimizing Distributed Real-Time Embedded Systems , 2004 .

[4]  Alexander Aiken,et al.  Type systems for distributed data structures , 2000, POPL '00.

[5]  Marc Pouzet,et al.  Modular Causality in a Synchronous Stream Language , 2001, ESOP.

[6]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[7]  Blair MacIntyre,et al.  Automatic partitioning for prototyping ubiquitous computing applications , 2004, IEEE Pervasive Computing.

[8]  Viktor Vafeiadis,et al.  Acute: high-level programming language design for distributed computation , 2005, ICFP '05.

[9]  Alain Girault,et al.  Software implementation of synchronous programs , 2001, Proceedings Second International Conference on Application of Concurrency to System Design.

[10]  Joseph Mitola,et al.  The software radio architecture , 1995, IEEE Commun. Mag..

[11]  Friedrich Jondral,et al.  Software-Defined Radio—Basics and Evolution to Cognitive Radio , 2005, EURASIP J. Wirel. Commun. Netw..

[12]  Stavros Tripakis,et al.  From simulink to SCADE/lustre to TTA: a layered approach for distributed embedded applications , 2003, LCTES '03.

[13]  Elizabeth D. Mynatt,et al.  Automatic Partitioning: A Promising Approach to Prototyping Ubiquitous Computing Applications , 2004 .

[14]  Stephen A. Edwards,et al.  The Synchronous Languages Twelve Years Later , 1997 .

[15]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[16]  Benoît Caillaud,et al.  Distributing Automata for Asynchronous Networks of Processors , 1997 .

[17]  Hussein Zedan,et al.  Slicing as a program transformation , 2007, TOPL.

[18]  Olivier Maffeis Ordonnancement de graphes de flots synchrones : application a la mise en oeuvre de signal , 1993 .

[19]  Peter H. Feiler,et al.  The SAE AADL Standard: an Architecture Analysis & Design Language for Embedded Real-time Systems, Part 2 , 2004 .

[20]  Henri E. Bal,et al.  Programming languages for distributed computing systems , 1989, CSUR.

[21]  Marc Pouzet,et al.  Towards a higher-order synchronous data-flow language , 2004, EMSOFT '04.

[22]  Paul Caspi,et al.  Automatic Distribution of Reactive Systems for Asynchronous Networks of Processors , 1999, IEEE Trans. Software Eng..

[23]  Pierre Jouvelot,et al.  Polymorphic type, region and effect inference , 1992, Journal of Functional Programming.