C**: A Large-Grain, Object-Oriented, Data-Parallel Programming Language

Document Type


Publication Date


Publication Title

University of Wisconsin Computer Sciences Technical Report #1126


Mathematics and Computer Science


C** is a new data-parallel programming language based on a new computation model called large-grain data parallelism. C** overcomes many disadvantages of existing data-parallel languages, yet retains their distinctive and advantageous programming style and deterministic behavior. This style makes data parallelism well-suited for massively-parallel computation. Large-grain data parallelism enhances data parallelism by permitting a wider range of algorithms to be expressed naturally. C** is an object-oriented programming language that inherits data abstraction features from C++. Existing scientific programming languages do not provide modern programming facilities such as operator extensibility, abstract datatypes, or object-oriented programming.C** -- and its sequential subset C++ -- support modern programming practices and enable a single language to be used for all parts of large, complex programs and libraries. This technical report consists of three parts. The body of the report is a copy of a paper that appeared in the 5th Workshop on Languages and Compilers for Parallel Computing, Yale University, Aug. 1992 (to appear, Lecture Notes in Computer Science, Springer-Verlag). The first appendix is a detailed overview of C**, which describes the language more thoroughly than the paper. The second appendix contains several sample C** programs and some preliminary performance results.