The Design and Implementation of Feldspar

An Embedded Language for Digital Signal Processing
  • Emil Axelsson
  • Koen Claessen
  • Mary Sheeran
  • Josef Svenningsson
  • David Engdal
  • Anders Persson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6647)

Abstract

Feldspar is a domain specific language, embedded in Haskell, for programming digital signal processing algorithms. The final aim of a Feldspar program is to generate low level code with good performance. Still, we chose to provide the user with a purely functional DSL. The language is implemented as a minimal, deeply embedded core language, with shallow extensions built upon it. This paper presents full details of the essential parts of the implementation. Our initial conclusion is that this approach works well in our domain, although much work remains.

Keywords

Functional Programming Primitive Function Core Language Instance Storable Core Expression 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Axelsson, E., Dévai, G., Horváth, Z., Keijzer, K., Lyckegård, B., Persson, A., Sheeran, M., Svenningsson, J., Vajda, A.: Feldspar: A Domain Specific Language for Digital Signal Processing algorithms. In: Proc. 8th ACM/IEEE International Conference on Formal Methods and Models for Codesign, IEEE, Los Alamitos (2010)Google Scholar
  2. 2.
    Carette, J., Kiselyov, O., Shan, C.: Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages. J. Func. Prog. 19(05) (2009)Google Scholar
  3. 3.
    Claessen, K., Sands, D.: Observable sharing for functional circuit description. In: Thiagarajan, P.S., Yap, R.H.C. (eds.) ASIAN 1999. LNCS, vol. 1742, p. 62. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  4. 4.
    Elliott, C., Finne, S., de Moor, O.: Compiling embedded languages. J. Func. Prog. 13(3), 455–481 (2003)CrossRefMATHGoogle Scholar
  5. 5.
  6. 6.
    Keller, G., Chakravarty, M., Leshchinskiy, R., Jones, S.P., Lippmeier, B.: Regular, shape-polymorphic, parallel arrays in Haskell. In: Proc. 15th ACM SIGPLAN international conference on Functional programming, pp. 261–272. ACM, New York (2010)CrossRefGoogle Scholar
  7. 7.
    Martin, G., Zarrinkoub, H.: From MATLAB to Embedded C, The Mathworks (2009), http://www.mathworks.com/company/newsletters/news_notes/2009/matlab-embedded-c.html
  8. 8.
    Püschel, M., Moura, J.M.F., Johnson, J., Padua, D., Veloso, M., Singer, B., Xiong, J., Franchetti, F., Gacic, A., Voronenko, Y., Chen, K., Johnson, R.W., Rizzolo, N.: SPIRAL: Code generation for DSP transforms. Proc. IEEE 93(2) (2005)Google Scholar
  9. 9.
    Scholz, S.: Single Assignment C: efficient support for high-level array operations in a functional setting. J. Func. Prog. 13(06), 1005–1059 (2003)MathSciNetCrossRefMATHGoogle Scholar
  10. 10.
    Schrijvers, T., Peyton Jones, S., Sulzmann, M., Vytiniotis, D.: Complete and decidable type inference for GADTs. In: Proc. 14th ACM SIGPLAN international conference on Functional programming, pp. 341–352. ACM, New York (2009)Google Scholar
  11. 11.
    Svensson, J., Sheeran, M., Claessen, K.: GPGPU Kernel Implementation and Refinement using Obsidian. In: Proc. Seventh International Workshop on Practical Aspects of High-level Parallel Programming. ICCS, Procedia (2010)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Emil Axelsson
    • 1
  • Koen Claessen
    • 1
  • Mary Sheeran
    • 1
  • Josef Svenningsson
    • 1
  • David Engdal
    • 2
  • Anders Persson
    • 1
    • 2
  1. 1.Chalmers University of TechnologySweden
  2. 2.EricssonSweden

Personalised recommendations