A Multidimensional Array Slicing DSL for Stream Programming

Stream languages offer a simple multi-core programming model and achieve good performance. Yet expressing data rearrangement patterns (like a matrix block decomposition) in these languages is verbose and error prone. In this paper, we propose a high-level programming language to elegantly describe n-dimensional data reorganization patterns. We show how to compile it to stream languages.

[1]  Sven-Bodo Scholz,et al.  Single Assignment C: efficient support for high-level array operations in a functional setting , 2003, Journal of Functional Programming.

[2]  Pierre Boulet,et al.  Projection of the Array-OL specification language onto the Kahn process network computation model , 2005, 8th International Symposium on Parallel Architectures,Algorithms and Networks (ISPAN'05).

[3]  Steven J. Deitz,et al.  Abstractions for dynamic data distribution , 2004, Ninth International Workshop on High-Level Parallel Programming Models and Supportive Environments, 2004. Proceedings..

[4]  Edward A. Lee,et al.  Dataflow process networks , 1995, Proc. IEEE.

[5]  Emmanuel Ohayon,et al.  Using Multi-Core Architectures to Execute High Performance-Oriented Real-Time Applications , 2009, PARCO.

[6]  William Thies,et al.  StreamIt: A Language for Streaming Applications , 2002, CC.

[7]  Zhaohui Du,et al.  Data and computation transformations for Brook streaming applications on multiprocessors , 2006, International Symposium on Code Generation and Optimization (CGO'06).

[8]  William Thies,et al.  Cache aware optimization of stream programs , 2005, LCTES '05.

[9]  Jean A. Peperstraete,et al.  Cycle-static dataflow , 1996, IEEE Trans. Signal Process..

[10]  Klaus D. McDonald-Maier,et al.  A Fuzzy Logic Reconfiguration Engine for Symmetric Chip Multiprocessors , 2010, 2010 International Conference on Complex, Intelligent and Software Intensive Systems.

[11]  Guido Rossum,et al.  Python Reference Manual , 2000 .

[12]  Michael I. Gordon,et al.  Exploiting coarse-grained task, data, and pipeline parallelism in stream programs , 2006, ASPLOS XII.