Data parallelism

Data-parallel languages have been around for a long time, but interest in them has surged recently because of the availability of massively parallel hardware. These languages are attractive because parallelism is not expressed as a set of processes whose interactions are managed by the user, but rather as parallel operations on aggregate data structures. A classification of such languages is presented in [SB91].

Flat data-parallel languages

The aggregate data structures of a flat data-parallel language cannot contain members that are themselves aggregates.

  1. An examination and comparison of the features found in a number of data-parallel languages [SB91].
  2. C*. C extended with domains, poly and mono variable classes, and reduction operations [RS87].
  3. Fortran 90. Triplet notation for array sections. Operations and intrinsic functions on array sections [MR92].
  4. HPF. Similar to Fortran 90, but includes data layout specifications to help the compiler generate efficient code [Hig93].
  5. Implementation of C* for MIMD machines [QH90].
  6. APL: the oldest and most influential of data-parallel languages [Ive62].
  7. UC: Another C based data-parallel language [BCK90].
  8. Apply. Regular communication patterns, mappings for various architectures [HWW89]. Designed for image processing.

Nested data-parallel languages:

Nested data-parallel languages allow aggregate data structures whose members are also aggregates. This allows parallel evaluation of functions that themselves involve parallel evaluation.

  1. NESL. A Functional language with sequences as collections [Ble93].
  2. Proteus. Not strictly a data-parallel language, but much of the compiler work has been on a data-parallel subset [MNP tex2html_wrap_inline350 90].
  3. CM-Lisp. Common Lisp augmented with nested key-ordered collections, and associated operations [SH86].
  4. The Paralation model. A language-independent model of parallel computation. Nested key-ordered collections with notion of shape [Sab88].
  5. Divicom. A language based on parallel divide-and-conquer [MH88].


Guy.Blelloch@cs.cmu.edu, July 1994