ABSTRACT
Coherent Parallel C (CPC) is an extension of C for parallelism. The extensions are not simply parallel for loops; instead, a data parallel programming model is adopted. This means that one has an entire process for each data object. An example of an “object” is one mesh point in a finite element solver. How the processes are actually distributed on a parallel machine is transparent—the user is to imagine that an entire processor in a distributed-memory environment is dedicated to each process. This simplifies programming tremendously: complex if statements associated with domain boundaries disappear; problems which do not exactly match the machine size and irregular boundaries are all handled transparently.
The usual communication calls are not seen at all at the user level. Variables of other processes (which may or may not be on another processor) are merely accessed (global memory). The first pass of the CPC compiler schedules the necessary communications in an efficient, coherent manner. Processes in CPC are insulated from one another and interact in a deterministic manner. This allows tractable debugging. Standard C I/O is provided, with simple extensions for parallelism.
We currently have a CPC runtime system implemented on an NCUBE and have started implementing a true compiler for the language.
CPC is not specific to distributed memory machines. Implementation of this language on other architectures is natural—for example, there seems to be no fundamental problem with CPC on shared-memory parallel computers.
- Chow87.E. Chow, H. Madan, and J. Peterson, "A Real-Time Adaptive Message Routing Network for the Hypercube Corn= purer," Caltech Concurrent Comput~ tion Program ~eport C3P-469, 1987.Google Scholar
- Dall86.W. Dally and C. Seits, "A VLSI Architecture for Concurrent Data Structures," Y. Distributed Systems I (1986), 187.Google Scholar
- Dull88.W. Dally, "Fine-Grain Message-Passing Concurrent Computers," this volume. Google ScholarDigital Library
- DAP79."The DAP Approach," in Infotech Slate of ~he Art Report: S~percomputers, 2, edited by C.R. J esshop=, R.W. Hockney, Infotech Intl. Ltd., Maidenhead (1979), 311-29.Google Scholar
- Denn74.J.B. Dennis, "First Version ofa Datafiow Procedure Language," in Proc. Prograra~ing Syraposi~m, Paris 1974, edited by, G. Goos and J. Hartmanis, Springer- Verlag, New York (1974). Google ScholarDigital Library
- Felt85.E.W. Felten, S.C. Karlin, and $.W. Otto, "Sorting on a Hypercube," Caltech Concurrent Computation Program report C3P-244.Google Scholar
- Felt88.E.W. Felten and S.W. Otto, "Chess on a Hypercube," this volume. Google ScholarDigital Library
- Fox88a.G.C. Fox, "What Have We Learned from Using Real Parallel Machines to Solve Real Problems?" in this volume. Google ScholarDigital Library
- Fox88b.G.C. Fox, M.A. Johnson, G.A. Lyzenga, S.W. Otto, J.K. Salmon, and D.W. Walker, "Solving Problems on Concurrent Processors", Prentice Hall, New Jersey 1988. Google ScholarDigital Library
- Harb87.S.P. Harbison and G.L. Steele, Jr., "C: A R. eference Manual," Prentice Hall, New Jersey, 1987. Google ScholarDigital Library
- Hill85.W.D. Hfilis, "The Connection Machine," MIT Press, Cambridge, 1985.Google Scholar
- NCUB87."NCUBE Reference Manual," NCUBE Corporation, 1987.Google Scholar
- Quin88.M.J. Quinn, P.J. Hatcher, K.C. lourdenais, "Compiling C* Programs for a Hypercube Multicomputer," this volume.Google Scholar
- Rose87.J. Rose, G. Steele, "C*: An Extended C Language for Data Parallel Programming,'' Thinking Machines Technical Report PL87-5 (1987)Google Scholar
- Salm87.S. Salmon, "CUBIX: Programming Hypercubes Without Programming Hosts," in Hype~cu& Mtdtiprocessors i987, edited by M. Heath, SIAM (1987), 3, Caltech Concurrent Computation Program report C3P-378.Google Scholar
- Stro86.B. Stroustrup, "The C++ Programming Language," Addison Wesley, Reading, Mass., 1986. Google ScholarDigital Library
Index Terms
- Coherent parallel C
Recommendations
Coherent Parallel Programming in C//
APDC '97: Proceedings of the 1997 Advances in Parallel and Distributed Computing Conference (APDC '97)This paper presents the coherent parallel programming concept using a new parallel language called C/spl par/ (pronounced C Parallel). The C/spl par/ language is based on the standard C language with a small set of extended constructs for parallelism ...
Data-Parallel Programming on MIMD Computers
The implementation of two compilers for the data-parallel programming language Dataparallel C is described. One compiler generates code for Intel and nCUBE hypercube multicomputers; the other generates code for Sequent multiprocessors. A suite of ...
A Comparison of 12 Parallel FORTRAN Dialects
A simple program that approximates pi by numerical quadrature is rewritten to run on nine commercially available processors to illustrate the compilations that arise in parallel programming in FORTRAN. The machines used are the Alliant FX/8, BBN ...
Comments