Next: Communication Primitives Up: Communication Model Previous: Computation Partitioning

Why Use Runtime Collective Communication?

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.

  1. 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.
  2. 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
  3. 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.
  4. 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.


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