DFScala: High Level Dataflow Support for Scala

In this paper we present DFScala, a library for constructing and executing dataflow graphs in the Scala language. Through the use of Scala this library allows the programmer to construct coarse grained dataflow graphs that take advantage of functional semantics for the dataflow graph and both functional and imperative semantics within the dataflow nodes. This combination allows for very clean code which exhibits the properties of dataflow programs, but we believe is more accessible to imperative programmers. We first describe DFScala in detail, before using a number of benchmarks to evaluate both its scalability and its absolute performance relative to existing codes. DFScala has been constructed as part of the Teraflux project and is being used extensively as a basis for further research into dataflow programming.

[1]  H. Jaap van den Herik,et al.  Parallel Monte-Carlo Tree Search , 2008, Computers and Games.

[2]  David C. Cann,et al.  Retire Fortran?: a debate rekindled , 1992, CACM.

[3]  R. Bird Introduction to functional programming using Haskell, Second Edition , 1998 .

[4]  Paraskevas Evripidou,et al.  TFlux: A Portable Platform for Data-Driven Multithreading on Commodity Multicore Systems , 2008, 2008 37th International Conference on Parallel Processing.

[5]  Inmos Corp,et al.  Occam Programming Manual , 1984 .

[6]  Eduard Ayguadé,et al.  An Extension of the StarSs Programming Model for Platforms with Multiple GPUs , 2009, Euro-Par.

[7]  Milo M. K. Martin,et al.  Why on-chip cache coherence is here to stay , 2012, Commun. ACM.

[8]  Brian Demsky,et al.  OoOJava: software out-of-order execution , 2011, PPoPP '11.

[9]  Ian Watson,et al.  The Manchester prototype dataflow computer , 1985, CACM.

[10]  C. Thomas Wu An Introduction to Object-Oriented Programming With Java , 1998 .

[11]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[12]  Richard S. Bird,et al.  Introduction to functional programming using haskeu , 1998 .

[13]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[14]  M. Luján,et al.  Applying Dataflow and Transactions to Lee Routing , 2012 .

[15]  Martin Odersky,et al.  Programming in Scala , 2008 .

[16]  Vivek Sarkar,et al.  Concurrent Collections Programming Model , 2010, Encyclopedia of Parallel Computing.