Next: Communication Primitives
Up: Communication Model
Previous: Computation Partitioning
Our Fortran 90D/HPF compiler produces calls to collective communication
routines [49] instead of generating individual processor send
and receive calls inside the compiled code.
There are four main reasons for using collective communication to
support interprocessor communication in the Fortran 90D/HPF compiler.
- Improved performance of Fortran 90D/HPF programs.
To achieve good performance, interprocessor
communication time must be minimized. By developing a separate library of
interprocessor communication routines,
each routine can be optimized.
This is particularly important given
that the routines will be used by many programs compiled through the compiler.
- Increased portability of the Fortran 90D/HPF compiler.
By separating the communication library from the basic compiler design,
portability is enhanced because to port the compiler, only the
machine specific low-level communication calls in the runtime
library need to be changed to support a new system
- Improved performance estimation of communication costs.
Our compiler uses the data distribution for the source arrays specified
by compiler directives.
However, a future compiler may require a capability to perform automatic
data distribution and alignment [46][40][47].
Such techniques usually require computing trade-offs between
exploitable parallelism and the communication costs.
The costs of collective communication routines can be determined more
precisely, thereby enabling the compiler to generate better distributions
automatically.
- Reduce the complexity of the compiler. Interprocessor
communication is one of the most error-prone aspects of writing parallel
programs. Furthermore, the communication bugs may be
intermittent and are difficult to discover, especially
when using large numbers of processors.
Similar problems may exist if the communication is generated at a low level inside the compiler.
Separating the two by developing an independent
library of communication routines frees the compiler writer from the
complexities of interprocessor communications.