Next: Communication Analysis Up: Architecture of the Previous: Analysis of Distribution

Internal Forall Transformations

The next phase of the compiler transforms parallel constructs: array assignments, statements/constructs, and statements/constructs into one internal representation which is similar to a statement. However, the internal representation only allows calls to pure functions (functions without side effects). If there is a call to a transformational intrinsic in the original construct, the transformation phase removes it during conversion to the internal representation to prevent joining of all processors within the parallel construct.

In Fortran 90D/HPF, we choose the forall statement as our intermediate language construct. Array assignment statements and where statements can be translated into equivalent forall statements with no loss of information. After transformation, subsequent phases of the compiler, such as optimization, process parallel constructs using only the internal representation. The Fortran 90D/HPF compiler generates the same intermediate and final code regardless of which constructs the programmer chooses.

Figure gives the algorithm for transforming the array assignment statement and where statement into equivalent forall statements.


zbozkus@
Thu Jul 6 21:09:19 EDT 1995