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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Thies, W.: Language and compiler support for stream programs. PhD thesis, Massachusetts Institute of Technology (2009)
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)
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)
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)
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)
Mencer, O.: ASC: A stream compiler for computing with FPGAs. IEEE Trans. Comput.-Aided Design Integr. Circuits Syst. 25, 1603–1617 (2006)
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)
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)
Arnold, K., Gosling, J.: The Java Programming Language, 2nd edn. Addison-Wesley, New York (1998)
Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques and Tools. Addison-Wesley (1988)
Jones, N., Gomard, C., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall International (1993)
Sabelfeld, A., Myers, A.: Language-based information-flow security. IEEE Journal on Selected Areas in Communications 21, 5–19 (2003)
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)
Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21, 666–677 (1978)
Buck, I., et al.: Brook for GPUs: Stream computing on graphics hardware. ACM Trans. Graph. 23, 777–786 (2004)
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)
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)
Taha, W.M.: Multistage Programming: Its Theory and Applications. PhD thesis, Oregon Graduate Institute (1999)
Leone, M., Lee, P.: Dynamic specialization in the Fabius system. ACM Comput. Surv. 30 (1998)
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)
Grant, B., et al.: DyC: an expressive annotation-directed dynamic compiler for C. Theor. Comput. Sci. 248, 147–199 (2000)
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)
Schultz, U.P., Lawall, J.L., Consel, C.: Automatic program specialization for Java. TOPLAS 25, 452–499 (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)