Skip to main content

Compositional C++: Compositional parallel programming

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1992)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 757))

Abstract

A compositional parallel program is a program constructed by composing component programs in parallel, where the composed program inherits properties of its components. In this paper, we describe a small extension of C++ called Compositional C++ or CC++ which is an object-oriented notation that supports compositional parallel programming. CC++ integrates different paradigms of parallel programming: data-parallel, task-parallel and object-parallel paradigms; imperative and declarative programming; shared memory and message-based programs. CC++ is designed to be transportable across a range of MIMD architectures.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. William B. Ackerman. Data flow languages. Computer, 15(2):15–25, February 1982.

    Google Scholar 

  2. Gul Agha. ACTORS: A Model of Concurrent Computation in Distributed Systems. MIT Press, 1986.

    Google Scholar 

  3. Arvind and R.E. Thomas. I-Structures: An efficient data structure for functional languages. Technical Report TM-178, MIT, 1980.

    Google Scholar 

  4. William C. Athas and C.L. Seitz. Multicomputer: Message-passing concurrent computers. IEEE Computer, August 1988.

    Google Scholar 

  5. Brian Bershad, Edward Lazowska, and Henry Levy. Presto: A system of objectoriented parallel programming. Software: Practice and Experience, 18(8):713–732, August 1988.

    Google Scholar 

  6. Ulla Binau. Real good stuff in CC++. Technical Report Caltech-CS-TR-92-11, California Institute of Technology, 1992.

    Google Scholar 

  7. Grady Booch. Object Oriented Design with Applications. The Benjamin/Cummings Publishing Company, Inc, 1991.

    Google Scholar 

  8. K. Mani Chandy and Carl Kesselman. The CC++ language definition. Technical Report Caltech-CS-TR-92-02, California Institute of Technology, 1992.

    Google Scholar 

  9. K. Mani Chandy and Carl Kesselman. The derivation of compositional programs. In Proceedings of the 1992 Joint International Conference and Symposium on Logic Programming. MIT Press, 1992.

    Google Scholar 

  10. K. Mani Chandy and Carl Kesselman. Mutual exclusion in a token ring in CC++: Program and proof. Technical Report Caltech-CS-TR-92-01, California Institute of Technology, 1992.

    Google Scholar 

  11. K. Mani Chandy and Jayadev Misra. Parallel Program Design: A Foundation. Addison-Wesley, 1988.

    Google Scholar 

  12. K. Mani Chandy and Stephen Taylor. An Introduction to Parallel Programming. Bartlett and Jones, 1991.

    Google Scholar 

  13. Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990.

    Google Scholar 

  14. Ian Foster. Information hiding in parallel programs. Technical Report MCS-P290-0292, Argonne National Laboratory, 1992.

    Google Scholar 

  15. Ian Foster and Stephen Taylor. STRAND: New Concepts in Parallel Programming. Prentice Hall, 1989.

    Google Scholar 

  16. Andrew S. Grimshaw. An introduction to parallel object-oriented programming with Mentat. Computer Science Report TR-91-07, University of Virginia, 1991.

    Google Scholar 

  17. Carl E. Hewitt and Henry Baker. Actors and continuous functionals. In Proceedings IFIP Working Conference on Formal Description of Programming Concepts, pages 367–387, August 1977.

    Google Scholar 

  18. David Kuck, Daniel Gajski, et al. A second opinion on data flow machines and languages. Computer, 15(2):58–69, February 1982.

    Google Scholar 

  19. Max Lemke and Daniel Quinlan. P++, a C++ virtual shared grids based programming environment for architecture-independent development of structured grid applications. Arbeitspapiere der GMD 611, Gesellschaft Für Mathematik und Datenverarbeitung MBH, February 1992.

    Google Scholar 

  20. J. McGraw et al. SISAL: Streams and iteration in a single assignment language, language reference manual, version 1.2. Technical Report M-146, LLNL, March 1985.

    Google Scholar 

  21. Jayadev Misra. Personal Communication, 1992.

    Google Scholar 

  22. S. Owicki and D. Gries. An axiomatic proof technique for parallel programs I. Acta Informatica, 6(1):319–340, 1976.

    Google Scholar 

  23. Amir Pnueli. Personal Communication, 1992.

    Google Scholar 

  24. Bjarne Stroustrup. The C++ Programming Language. Addison Wesley, second edition edition, 1991.

    Google Scholar 

  25. Bjarne Stroustrup and Jonathan Shopiro. A set of C++ classes for co-routine style programming. In Proceedings of the USENIX C++ Workshop, November 1987.

    Google Scholar 

  26. Andrew A. Chien Waldemar Horwat and William J. Dally. Experience with CST: Programming and implementation. In SIGPLAN 89 Conference on Programming Language Design and Implementation, 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints and permissions

Copyright information

© 1993 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Chandy, K.M., Kesselman, C. (1993). Compositional C++: Compositional parallel programming. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1992. Lecture Notes in Computer Science, vol 757. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57502-2_44

Download citation

  • DOI: https://doi.org/10.1007/3-540-57502-2_44

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57502-3

  • Online ISBN: 978-3-540-48201-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics