Feldspar: A domain specific language for digital signal processing algorithms

A new language, Feldspar, is presented, enabling high-level and platform-independent description of digital signal processing (DSP) algorithms. Feldspar is a pure functional language embedded in Haskell. It offers a high-level dataflow style of programming, as well as a more mathematical style based on vector indices. The key to generating efficient code from such descriptions is a high-level optimization technique called vector fusion. Feldspar is based on a low-level, functional core language which has a relatively small semantic gap to machine-oriented languages like C. The core language serves as the interface to the back-end code generator, which produces C. For very small examples, the generated code performs comparably to hand-written C code when run on a DSP target. While initial results are promising, to achieve good performance on larger examples, issues related to memory access patterns and array copying will have to be addressed.

[1]  Mary Sheeran,et al.  Using Lava to design and verify recursive and periodic sorters , 2003, International Journal on Software Tools for Technology Transfer.

[2]  Hugo De Man,et al.  DSP specification using the Silage language , 1990, International Conference on Acoustics, Speech, and Signal Processing.

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

[4]  Oege de Moor,et al.  Compiling embedded languages , 2003, J. Funct. Program..

[5]  Graham Hutton Programming in Haskell , 2007 .

[6]  Sorin Lerner,et al.  Composing dataflow analyses and transformations , 2002, POPL '02.

[7]  David Tarditi,et al.  Accelerator: using data parallelism to program GPUs for general-purpose uses , 2006, ASPLOS XII.

[8]  Matthias Felleisen,et al.  Building Little Languages With Macros , 2004 .

[9]  Simon L. Peyton Jones,et al.  Simple unification-based type inference for GADTs , 2006, ICFP '06.

[10]  Samuel Williams,et al.  The Landscape of Parallel Computing Research: A View from Berkeley , 2006 .

[11]  Roman Leshchinskiy,et al.  Stream fusion: from lists to streams to nothing at all , 2007, ICFP '07.

[12]  Franz Franchetti,et al.  SPIRAL: Code Generation for DSP Transforms , 2005, Proceedings of the IEEE.

[13]  Willi Meier,et al.  SHA-3 proposal BLAKE , 2009 .

[14]  Bo Joel Svensson,et al.  GPGPU kernel implementation and refinement using Obsidian , 2010, ICCS.

[15]  Simon L. Peyton Jones,et al.  A short cut to deforestation , 1993, FPCA '93.

[16]  J. R. Lewis,et al.  Cryptol: high assurance, retargetable crypto development and validation , 2003, IEEE Military Communications Conference, 2003. MILCOM 2003..

[17]  Simon Peyton Jones,et al.  Playing by the rules: rewriting as a practical optimisation technique in GHC , 2001 .

[18]  Simon Peyton Jones,et al.  Hoopl: Dataflow Optimization Made Simple , 2009 .

[19]  Zoltán Horváth,et al.  Efficient Code Generation from the High-level Domain-specific Language Feldspar for DSPs , 2010, CGO 2010.

[20]  Peter Marwedel,et al.  Source Code Optimization Techniques for Data Flow Dominated Embedded Software , 2004, Springer US.

[21]  J. Nelson Rushton,et al.  SequenceL - An Overview of a Simple Language , 2005, PLC.

[22]  Andrew John Gill,et al.  Cheap deforestation for non-strict functional languages , 1996 .