The core of this thesis is devoted to demonstrating that Fortran 90D/HPF programs written in a data-parallel programming style can be compiled into efficient parallel programs for distributed memory machines.
This thesis describes the design and implementation of a Fortran 90D/HPF compiler. A systematic methodology to process distribution directives of Fortran 90D/HPF is presented. Furthermore, techniques for data and computation partitioning, communication detection and generation, and run-time support for the compiler are discussed.
The compiler must recognize the presence of communication patterns in the computations in order to generate appropriate communication calls. Specifically, this involves a number of tests on the relationships among subscripts of various arrays in a statement. We designed an algorithm to detect communications and to generate appropriate collective communication calls to execute array assignments and foralls statement on distributed memory machines.
The thesis presents several types of communication and computation optimizations used to maximize the performance of the generated code: Communication optimizations can be classified as
In addition, some computation optimizations are developed for sequentialization of forall statements such as
Some of these optimizations are validated with examples.
We have indicated our confidence in the performance of the code generated by publishing the absolute execution times of several benchmarks. We believe that Fortran 90D/HPF greatly improves programmer productivity. Fortran 90D/HPF programs are shorter, easier to write, and easier to debug than programs written in Fortran 77 with message passing. We have found that Fortran 90D/HPF makes it much easier to tune nontrivial programs.
We believe that the methodology used to process data distribution, computation partitioning, communication system design and the overall compiler design can be used by implementors of future HPF compilers.