Skip to main content

The Shape of Things to Run

Compiling Complex Stream Graphs to Reconfigurable Hardware in Lime

  • Conference paper
ECOOP 2013 – Object-Oriented Programming (ECOOP 2013)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 7920))

Included in the following conference series:

  • 1745 Accesses

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Thies, W.: Language and compiler support for stream programs. PhD thesis, Massachusetts Institute of Technology (2009)

    Google Scholar 

  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. 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. 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. 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. Mencer, O.: ASC: A stream compiler for computing with FPGAs. IEEE Trans. Comput.-Aided Design Integr. Circuits Syst. 25, 1603–1617 (2006)

    Article  Google Scholar 

  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. 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. Arnold, K., Gosling, J.: The Java Programming Language, 2nd edn. Addison-Wesley, New York (1998)

    Google Scholar 

  10. Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques and Tools. Addison-Wesley (1988)

    Google Scholar 

  11. Jones, N., Gomard, C., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall International (1993)

    Google Scholar 

  12. Sabelfeld, A., Myers, A.: Language-based information-flow security. IEEE Journal on Selected Areas in Communications 21, 5–19 (2003)

    Article  Google Scholar 

  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)

    Chapter  Google Scholar 

  14. Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21, 666–677 (1978)

    Article  MATH  Google Scholar 

  15. Buck, I., et al.: Brook for GPUs: Stream computing on graphics hardware. ACM Trans. Graph. 23, 777–786 (2004)

    Article  Google Scholar 

  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. 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. Taha, W.M.: Multistage Programming: Its Theory and Applications. PhD thesis, Oregon Graduate Institute (1999)

    Google Scholar 

  19. Leone, M., Lee, P.: Dynamic specialization in the Fabius system. ACM Comput. Surv. 30 (1998)

    Google Scholar 

  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. Grant, B., et al.: DyC: an expressive annotation-directed dynamic compiler for C. Theor. Comput. Sci. 248, 147–199 (2000)

    Article  MATH  Google Scholar 

  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. Schultz, U.P., Lawall, J.L., Consel, C.: Automatic program specialization for Java. TOPLAS 25, 452–499 (2003)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Auerbach, J., Bacon, D.F., Cheng, P., Fink, S., Rabbah, R. (2013). The Shape of Things to Run. In: Castagna, G. (eds) ECOOP 2013 – Object-Oriented Programming. ECOOP 2013. Lecture Notes in Computer Science, vol 7920. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-39038-8_28

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-39038-8_28

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-39037-1

  • Online ISBN: 978-3-642-39038-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics