For the purposes here data parallelism will mean concurrent operations on array elements. Process parallelism involves performing different processes in parallel, where a process is an arbitrary sequence of computations. A subroutine, for example, is a process, as is any block of statements. An increasingly important form of process parallelism is evaluating two expressions simultaneously-two actual arguments, for example, in a procedure call. A number of approaches to specifying process parallelism have been developed, and process parallelism standards are beginning to appear . This type of parallelism will be discussed in the next release of this chapter.
Process parallelism may be important in many applications of computational science, but because of the ubiquitousness of arrays in such applications, data parallelism is likely to be useful in most and critical in many. This section therefore focuses on parallel array operations, with particular emphasis on the extraordinarily rich set of such operations in Fortran 90.