Nothing Special   »   [go: up one dir, main page]

skip to main content
article

Programming by sketching for bit-streaming programs

Published: 12 June 2005 Publication History

Abstract

This paper introduces the concept of programming with sketches, an approach for the rapid development of high-performance applications. This approach allows a programmer to write clean and portable reference code, and then obtain a high-quality implementation by simply sketching the outlines of the desired implementation. Subsequently, a compiler automatically fills in the missing details while also ensuring that a completed sketch is faithful to the input reference code. In this paper, we develop StreamBit as a sketching methodology for the important class of bit-streaming programs (e.g., coding and cryptography).A sketch is a partial specification of the implementation, and as such, it affords several benefits to programmer in terms of productivity and code robustness. First, a sketch is easier to write compared to a complete implementation. Second, sketching allows the programmer to focus on exploiting algorithmic properties rather than on orchestrating low-level details. Third, a sketch-aware compiler rejects "buggy" sketches, thus improving reliability while allowing the programmer to quickly evaluate sophisticated implementation ideas.We evaluated the productivity and performance benefits of our programming methodology in a user-study, where a group of novice StreamBit programmers competed with a group of experienced C programmers on implementing a cipher. We learned that, given the same time budget, the ciphers developed in StreamBit ran 2.5x faster than ciphers coded in C. We also produced implementations of DES and Serpent that were competitive with hand optimized implementations available in the public domain.

References

[1]
G. Almasi and D. Padua. Majic: Compiling matlab for speed and responsiveness. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 294--303, June 2002.
[2]
R. Anderson, E. Biham, and L. Knudsen. Serpent: A proposal for the advanced encryption standard. The implementation we tested can be found at http://www.cl.cam.ac.uk/ rja14/serpent.html.
[3]
D. Andre and S. Russell. Programmable reinforcement learning agents. Advances in Neural Information Processing Systems, 13, 2001. MIT Press.
[4]
J. Buck, S. Ha, E. A. Lee, and D. G. Messerschmitt. Ptolemy: A framework for simulating and prototyping heterogeneous systems. Int. Journal of Computer Simulation, 4:155--182, April 1994. special issue on "Simulation Software Development".
[5]
A. Chauhan, C. McCosh, and K. Kennedy. Automatic type-driven library generation for telescoping languages. In Proceedings of SC: High-performance Computing and Networking Conference, Nov. 2003.
[6]
J. Demmel, J. Dongarra, V. Eijkhout, E. Fuentes, A. Petitet, R. Vuduc, C. Whaley, and K. Yelick. Self adapting linear algebra algorithms and software. Proceedings of the IEEE, 93(2), 2005.
[7]
R. Ennals, R. Sharp, and A. Mycroft. Task partitioning for multi-core network processors. In Compiler Construction, Edinburgh, Scotland, April 2005.
[8]
N. Ferguson and B. Schneier. Practical Cryptography. Wiley Publishing Inc, 2003.
[9]
Data encryption standard (des). U.S. DEPARTMENT OF COM-MERCE/National Institute of Standards and Technology, December 1993. http://www.itl.nist.gov/fipspubs/fip46-2.htm.
[10]
M. Frigo and S. Johnson. Fftw: An adaptive software architecture for the fft. In ICASSP conference proceedings, volume 3, pages 1381--1384, 1998.
[11]
P. V. Hentenryck and V. Saraswat. Strategic directions in constraint programming. ACM Comput. Surv., 28(4):701--726, 1996.
[12]
J. Irwin, J.-M. Loingtier, J. R. Gilbert, G. Kiczales, J. Lamping, A. Mendhekar, and T. Shpeisman. Aspect-oriented programming of sparse matrix code. In Proceedings International Scientific Computing in Object-Oriented Parallel Environments (ISCOPE), number 1343 in LNCS, Marina del Rey, CA, 1997. Springer-Verlag.
[13]
K. Kennedy, B. Broom, A. Chauhan, R. Fowler, J. Garvin, C. Koelbel, C. McCosh, and J. Mellor-Crummey. Telescoping languages: A system for automatic generation of domain languages. Proceedings of the IEEE, 93(2), 2005.
[14]
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In proceedings of the European Conference on Object-Oriented Programming (ECOOP), number 1241 in LNCS. Springer-Verlag, June 1997.
[15]
A. A. Lamb, W. Thies, and S. Amarasinghe. Linear analysis and optimization of stream programs. In ACM SIGPLAN Conference on Programming Language Design and Implementation, San Diego, CA, June 2003.
[16]
E. A. Lee and D. G. Messerschmitt. Synchronous data flow. Proceedings of the IEEE, September 1987.
[17]
M. Morgan. http://www.schneier.com/blowfish-bug.txt.
[18]
M. Püschel, B. Singer, J. Xiong, J. Moura, J. Johnson, D. Padua, M. Veloso, and R. Johnson. Spiral: A generator for platform-adapted libraries of signal processing algorithms. Journal of High Performance Computing and Applications, accepted for publication.
[19]
W. Thies, M. Karczmarek, and S. Amarasinghe. Streamit: A language for streaming applications. In International Conference on Compiler Construction, Grenoble, France, Apr. 2002.
[20]
L. Wu, C. Weaver, and T. Austin. Cryptomaniac: A fast flexible architecture for secure communication. In 28th Annual International Symposium on Computer Architecture (28th ISCA 2001), Goteborg, Sweden, June-July 2001. ACM SIGARCH / IEEE.
[21]
E. Young. http://www.openssl.org. libDES is now part of OpenSSL.

Cited By

View all
  • (2023)PyEvolve: Automating Frequent Code Changes in Python ML SystemsProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00091(995-1007)Online publication date: 14-May-2023
  • (2023)Synthesising Programs with Non-trivial ConstantsJournal of Automated Reasoning10.1007/s10817-023-09664-467:2Online publication date: 13-May-2023
  • (2023)Specification Sketching for Linear Temporal LogicAutomated Technology for Verification and Analysis10.1007/978-3-031-45332-8_2(26-48)Online publication date: 19-Oct-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 40, Issue 6
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
June 2005
325 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/1064978
Issue’s Table of Contents
  • cover image ACM Conferences
    PLDI '05: Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
    June 2005
    338 pages
    ISBN:1595930566
    DOI:10.1145/1065010
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 June 2005
Published in SIGPLAN Volume 40, Issue 6

Check for updates

Author Tags

  1. StreamIt
  2. domain specific compiler
  3. domain specific language
  4. sketching
  5. stream programming
  6. synchronous dataflow

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)58
  • Downloads (Last 6 weeks)18
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)PyEvolve: Automating Frequent Code Changes in Python ML SystemsProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00091(995-1007)Online publication date: 14-May-2023
  • (2023)Synthesising Programs with Non-trivial ConstantsJournal of Automated Reasoning10.1007/s10817-023-09664-467:2Online publication date: 13-May-2023
  • (2023)Specification Sketching for Linear Temporal LogicAutomated Technology for Verification and Analysis10.1007/978-3-031-45332-8_2(26-48)Online publication date: 19-Oct-2023
  • (2022)Execution of Partial State Machine ModelsIEEE Transactions on Software Engineering10.1109/TSE.2020.300885048:3(951-972)Online publication date: 1-Mar-2022
  • (2022)Synthesizing Skolem Functions: A View from Theory and PracticeHandbook of Logical Thought in India10.1007/978-81-322-2577-5_51(1187-1222)Online publication date: 5-Nov-2022
  • (2022)Synthesizing Skolem Functions: A View from Theory and PracticeHandbook of Logical Thought in India10.1007/978-81-322-1812-8_51-1(1-36)Online publication date: 1-Jul-2022
  • (2021)How statically-typed functional programmers write codeProceedings of the ACM on Programming Languages10.1145/34855325:OOPSLA(1-30)Online publication date: 15-Oct-2021
  • (2021)Grafs: declarative graph analyticsProceedings of the ACM on Programming Languages10.1145/34735885:ICFP(1-32)Online publication date: 19-Aug-2021
  • (2021)AI programmerProceedings of the Genetic and Evolutionary Computation Conference Companion10.1145/3449726.3463125(1513-1521)Online publication date: 7-Jul-2021
  • (2021)PAYNT: A Tool for Inductive Synthesis of Probabilistic ProgramsComputer Aided Verification10.1007/978-3-030-81685-8_40(856-869)Online publication date: 15-Jul-2021
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media