The goal of the Fortran 90 standard is to ``modernize Fortran, so that it may continue its long history as a scientific and engineering programming language''. One of the major new features of Fortran 90 are the array operations to facilitate vector and data parallel programming.
Data parallel languages have distributed data just as for the message passing languages, however the data is explicitly written as a globally addressed array. As in the Fortran 90 array syntax, the expression
2.0cm
DIMENSION A(100,100), B(100,100), C(100,100)
2.0cm
A = B + C
is equivalent to
2.0cm
DO i = 1, 100
2.0cm
DO j = 1, 100
2.5cm
A(i,j) = B(i,j) + C(i,j)
2.0cm
END DO
2.0cm
END DO
The first expression clearly allows easier exploitation of parallelism (especially as a simple DO loop of Fortran 77 can often be ``accidentally'' obscured, so a compiler can no longer see the equivalence to Fortran 90 array notation). Migration of data is also much simpler in a data parallel language. If the data required to do a calculation is on another processor, it will be automatically passed between nodes, without requiring explicit message passing calls set up by the user.
Schematically, a program might look something like the following, using either an array syntax with shifting operations to move data (as in Fortran 90), or explicit parallel loops in a FORALL statement using standard array indices to indicate where the data is to be found (FORALL is not in the Fortran 90 standard, but is present in many other dialects of data parallel Fortran):
2.0cm A = B + SHIFT (C, in x direction)
2.0cm
FORALL i,j
2.5cm
A(i,j) = B(i,j) + C(i-1,j)
The advantages of this style of programming are:
The disadvantages are: