Compositional C++: Compositional parallel programming

  • K. Mani Chandy
  • C. Kesselman
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 757)


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.


Parallel Programming Atomic Function Parallel Composition Loop Body Global Pointer 
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]
    William B. Ackerman. Data flow languages. Computer, 15(2):15–25, February 1982.Google Scholar
  2. [2]
    Gul Agha. ACTORS: A Model of Concurrent Computation in Distributed Systems. MIT Press, 1986.Google Scholar
  3. [3]
    Arvind and R.E. Thomas. I-Structures: An efficient data structure for functional languages. Technical Report TM-178, MIT, 1980.Google Scholar
  4. [4]
    William C. Athas and C.L. Seitz. Multicomputer: Message-passing concurrent computers. IEEE Computer, August 1988.Google Scholar
  5. [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. [6]
    Ulla Binau. Real good stuff in CC++. Technical Report Caltech-CS-TR-92-11, California Institute of Technology, 1992.Google Scholar
  7. [7]
    Grady Booch. Object Oriented Design with Applications. The Benjamin/Cummings Publishing Company, Inc, 1991.Google Scholar
  8. [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. [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. [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. [11]
    K. Mani Chandy and Jayadev Misra. Parallel Program Design: A Foundation. Addison-Wesley, 1988.Google Scholar
  12. [12]
    K. Mani Chandy and Stephen Taylor. An Introduction to Parallel Programming. Bartlett and Jones, 1991.Google Scholar
  13. [13]
    Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990.Google Scholar
  14. [14]
    Ian Foster. Information hiding in parallel programs. Technical Report MCS-P290-0292, Argonne National Laboratory, 1992.Google Scholar
  15. [15]
    Ian Foster and Stephen Taylor. STRAND: New Concepts in Parallel Programming. Prentice Hall, 1989.Google Scholar
  16. [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. [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. [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. [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. [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. [21]
    Jayadev Misra. Personal Communication, 1992.Google Scholar
  22. [22]
    S. Owicki and D. Gries. An axiomatic proof technique for parallel programs I. Acta Informatica, 6(1):319–340, 1976.Google Scholar
  23. [23]
    Amir Pnueli. Personal Communication, 1992.Google Scholar
  24. [24]
    Bjarne Stroustrup. The C++ Programming Language. Addison Wesley, second edition edition, 1991.Google Scholar
  25. [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. [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

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • K. Mani Chandy
    • 1
  • C. Kesselman
    • 1
  1. 1.California Institute of Technology at PasadenaUSA

Personalised recommendations