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
The aggregate data structures of a flat data-parallel language cannot
contain members that are themselves aggregates.
An examination and comparison of the features found in a number of
data-parallel languages [SB91].
C*. C extended with domains, poly and mono variable classes, and
reduction operations [RS87].
Fortran 90. Triplet notation for array sections. Operations and
intrinsic functions on array sections [MR92].
HPF. Similar to Fortran 90, but includes data layout specifications to
help the compiler generate efficient code [Hig93].
Implementation of C* for MIMD machines [QH90].
APL: the oldest and most influential of data-parallel
UC: Another C based data-parallel
Apply. Regular communication patterns, mappings for various
architectures [HWW89]. Designed for image processing.
Nested data-parallel languages allow aggregate data structures whose
members are also aggregates. This allows parallel evaluation of
functions that themselves involve parallel evaluation.
NESL. A Functional language with sequences as collections [Ble93].
Proteus. Not strictly a data-parallel language, but much of the compiler
work has been on a data-parallel subset [MNP 90].
CM-Lisp. Common Lisp augmented with nested key-ordered collections,
and associated operations [SH86].
The Paralation model. A language-independent model of parallel
computation. Nested key-ordered collections with notion of
Divicom. A language based on parallel divide-and-conquer [MH88].
Guy.Blelloch@cs.cmu.edu, July 1994