The C* Parallel Programming Language

Publisher Summary This chapter describes C*as an extension of the C language designed for Thinking Machines Single Instruction Multiple Data) (SIMD) computer, the Connection Machine. The language design assumes a Von-Neumann style front-end computer (such as a VAX) working in cooperation with an array of identical processors each with local memory. The processors in the array simultaneously execute the same instruction stream while communicating data between each other and the front end. C* assumes the same abstract machine model as C sharing the features of (1) a uniform address space, (2) sequential execution, and (3) pointer arithmetic. The only difference in the models arises from C*'s execution of the instruction stream by many processors instead of just one. This difference is a key feature of the C* language which seeks to assign a processor to every data item of interest. Just as a well written C program scales with the size of arrays, C* scales by assuming a virtual processor is assigned to every point in an array. When more virtual processors are required than the actual number of physical processors requested, multiple virtual processors are assigned to each physical processor. The number of virtual processors that can be assigned to a physical processor is limited only by local memory.