Reo: A Dataflow Inspired Language for Multicore

The Reo language has been well documented to address difficulties in parallel programming. It separates interaction protocol from computation code, which allows separate development, reuse, and formal proofs about the protocol correctness. Modules of computation can be composed by externally defining a protocol, without concern for their internal details. Achieving acceptable performance for code generated from Reo specifications has been a major challenge. In this paper, we address this with a combination of implementing the circuit splitting optimization and using the proto-runtime approach as a base platform for the runtime system of the Reo language. Our results show that the overhead when running Reo is so low that the performance of a k-tuple benchmark protocol compiled from its Reo specification is now up to six times faster than a straightforward hand-written thread implementation and nearly equal to a carefully optimized thread implementation of the same protocol.

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

[2]  Albert Cohen,et al.  A study of frameworks for collectively achieving the productivity, portability, and adoptability goals of parallel software , 2011 .

[3]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[4]  Farhad Arbab,et al.  Partially-Distributed Coordination with Reo , 2014, 2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing.

[5]  David R. Butenhof Programming with POSIX threads , 1993 .

[6]  Davide Sangiorgi,et al.  Communicating and Mobile Systems: the π-calculus, , 2000 .

[7]  Erik P. de Vink,et al.  Dreams: a framework for distributed synchronous coordination , 2012, SAC '12.

[8]  Farhad Arbab,et al.  Puff, The Magic Protocol , 2011, Formal Modeling: Actors, Open Systems, Biological Systems.

[9]  Farhad Arbab,et al.  Global Consensus through Local Synchronization , 2013, ESOCC Workshops.

[10]  Albert Cohen,et al.  A Mutable Hardware Abstraction to Replace Threads , 2011, LCPC.

[11]  Farhad Arbab,et al.  Modularizing and Specifying Protocols among Threads , 2013, PLACES.

[12]  Farhad Arbab,et al.  Reo: A Channel-based Coordination Model for Component Composition , 2005 .

[13]  Dawson R. Engler,et al.  Exokernel: an operating system architecture for application-level resource management , 1995, SOSP.

[14]  Farhad Arbab,et al.  Overview of Thirty Semantic Formalisms for Reo , 2012, Sci. Ann. Comput. Sci..

[15]  Dave Clarke,et al.  A Procedure for Splitting Processes and its Application to Coordination , 2012, FOCLASA.

[16]  Christel Baier,et al.  Modeling component connectors in Reo by constraint automata , 2004, Sci. Comput. Program..

[17]  Terence Parr The Definitive ANTLR Reference: Building Domain-Specific Languages , 2007 .