next up previous contents
Next: High Performance Fortran Up: Related languages Previous: *LISP   Contents

C*

A slightly later language for the Connection Machine, C* was a data-parallel dialect of C. This language was first announced in 1987, and overhauled considerably for 1990. The discussion here is based on section 4.3 of [9].

C* introduced the idea of a shape, which was used to specify how parallel data was organized.

  shape [128] [128] grid ;
  real:grid a, b, c ;
This fragment would create a $128 \times 128$ shape called grid, and declare two parallel arrays a and b having this shape.

Parallel operations usually occur within the context of a with statement. This construct activates the positions of the shape, and sets the context for the parallel variables manipulated within its body. For example:

  with(grid) {
      a = b + c ;
  }

C* also had a builtin syntax for reduction operations, overloading the +=, etc, accumulating assignments of C. It had a where construct similar to Fortran 90:

  with(grid) {
      where(a > 0.0) {
          ...
      }
  }
A function pcoord(d) returned the logical coordinate in the dth dimension of the currently active shape.



Bryan Carpenter 2002-07-12