The Shape of Things to Run

Compiling Complex Stream Graphs to Reconfigurable Hardware in Lime
  • Josh Auerbach
  • Dave F. Bacon
  • Perry Cheng
  • Steve Fink
  • Rodric Rabbah
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7920)


Reconfigurable hardware can deliver impressive performance for some applications, when a highly static hardware design closely matches application logic. Obliged to express efficient static hardware structures, hardware designers cannot currently employ abstractions using dynamic features of modern programming languages.

We present the design and implementation of new features in the Lime programming language that admit construction of stream graphs of arbitrary shape using the expressive power of an imperative, object-oriented language. The Lime programmer marks computations destined for hardware, and the compiler statically checks these computations for repeatable structure. If the check succeeds, the system guarantees it can extract the static structure needed for hardware synthesis.

We describe the language design in detail and present case studies of 10 Lime benchmarks, each successfully synthesized to a Xilinx Virtex 5 FPGA.


Partial Evaluation Systolic Array Task Graph Graph Construction Task Initializer 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Thies, W.: Language and compiler support for stream programs. PhD thesis, Massachusetts Institute of Technology (2009)Google Scholar
  2. 2.
    Hirzel, M., Gedik, B.: Streams that compose using macros that oblige. In: Proceedings of the SIGPLAN Workshop on Partial Evaluation and Program Manipulation, pp. 141–150 (2012)Google Scholar
  3. 3.
    Chambers, C., et al.: FlumeJava: Easy, efficient data-parallel pipelines. In: Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation, pp. 363–375 (2010)Google Scholar
  4. 4.
    Plavec, F., Vranesic, Z.G., Brown, S.D.: Towards compilation of streaming programs into FPGA hardware. In: Forum on Specification and Design Languages, pp. 67–72 (2008)Google Scholar
  5. 5.
    Gokhale, M., Stone, J., Arnold, J., Kalinowski, M.: Stream-oriented FPGA computing in the Streams-C high level language. In: Field-Programmable Custom Computing Machines, pp. 49–56 (2000)Google Scholar
  6. 6.
    Mencer, O.: ASC: A stream compiler for computing with FPGAs. IEEE Trans. Comput.-Aided Design Integr. Circuits Syst. 25, 1603–1617 (2006)CrossRefGoogle Scholar
  7. 7.
    Hormati, A., Kudlur, M., Mahlke, S., Bacon, D.F., Rabbah, R.: Optimus: Efficient realization of streaming applications on FPGAs. In: Proceedings of the International Conference on Compilers, Architectures and Synthesis for Embedded Systems, pp. 41–50 (2008)Google Scholar
  8. 8.
    Auerbach, J., Bacon, D.F., Cheng, P., Rabbah, R.: Lime: a Java-compatible and synthesizable language for heterogeneous architectures. In: OOPSLA, pp. 89–108 (October 2010)Google Scholar
  9. 9.
    Arnold, K., Gosling, J.: The Java Programming Language, 2nd edn. Addison-Wesley, New York (1998)Google Scholar
  10. 10.
    Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques and Tools. Addison-Wesley (1988)Google Scholar
  11. 11.
    Jones, N., Gomard, C., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall International (1993)Google Scholar
  12. 12.
    Sabelfeld, A., Myers, A.: Language-based information-flow security. IEEE Journal on Selected Areas in Communications 21, 5–19 (2003)CrossRefGoogle Scholar
  13. 13.
    Gordon, M.I., Thies, W., Amarasinghe, S.: Exploiting coarse-grained task, data, and pipeline parallelism in stream programs. In: Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS-XII, pp. 151–162. ACM, New York (2006)CrossRefGoogle Scholar
  14. 14.
    Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21, 666–677 (1978)zbMATHCrossRefGoogle Scholar
  15. 15.
    Buck, I., et al.: Brook for GPUs: Stream computing on graphics hardware. ACM Trans. Graph. 23, 777–786 (2004)CrossRefGoogle Scholar
  16. 16.
    Thies, W., Karczmarek, M., Amarasinghe, S.P.: StreamIt: A language for streaming applications. In: Proceedings of the 11th International Conference on Compiler Construction, London, UK, pp. 179–196 (2002)Google Scholar
  17. 17.
    Mainland, G., Morrisett, G., Welsh, M.: Flask: staged functional programming for sensor networks. In: Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming, pp. 335–346 (2008)Google Scholar
  18. 18.
    Taha, W.M.: Multistage Programming: Its Theory and Applications. PhD thesis, Oregon Graduate Institute (1999)Google Scholar
  19. 19.
    Leone, M., Lee, P.: Dynamic specialization in the Fabius system. ACM Comput. Surv. 30 (1998)Google Scholar
  20. 20.
    Poletto, M., Engler, D.R., Kaashoek, M.F.: tcc: a system for fast, flexible, and high-level dynamic code generation. In: Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation, pp. 109–121 (1997)Google Scholar
  21. 21.
    Grant, B., et al.: DyC: an expressive annotation-directed dynamic compiler for C. Theor. Comput. Sci. 248, 147–199 (2000)zbMATHCrossRefGoogle Scholar
  22. 22.
    Consel, C., Noël, F.: A general approach for run-time specialization and its application to C. In: Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 145–156 (1996)Google Scholar
  23. 23.
    Schultz, U.P., Lawall, J.L., Consel, C.: Automatic program specialization for Java. TOPLAS 25, 452–499 (2003)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Josh Auerbach
    • 1
  • Dave F. Bacon
    • 1
  • Perry Cheng
    • 1
  • Steve Fink
    • 1
  • Rodric Rabbah
    • 1
  1. 1.IBM T.J. Watson Research CenterYorktown HeightsUSA

Personalised recommendations