next up previous
Next: We Must Analyze Up: Polaris Philosophy Previous: Polaris Philosophy

We Must Make Strong Compilers

The Polaris project is based upon the belief that ordinary serial programs can be understood well-enough by a compiler to be translated for efficient execution on a parallel computer. We don't believe that Fortran language extensions are necessary, and certainly not entirely new languages. The major failing of language extensions and annotations which require the user to specify which loops are parallel and how to distribute data is that they specialize the program too much.

For instance, the data distribution done for a CM5 would not necessarily be the same as the data distribution done for a Cray T3D or a Convex SPP (Exemplar). So, even if the data distribution is expressed in a machine-independent way (as in HPF), when porting to a new machine, the distribution may have to be rewritten to get good performance due to the different structure of the new machine. For a large program, this is not easy.

It may be advantageous to change the parallel structure, when porting a program to a new machine, as well. A simple example is a situation in which a code is hand-parallelized for a machine with a small parallel-loop overhead. On such a machine, small loops may be parallelized with little penalty. When a program parallelized for such a machine is ported to a new machine with a large parallel loop overhead, those small parallelized loops can destroy performance, especially if they are executed many times. With some experimentation, the user may identify which loops should be serialized, but this could be a tedious process, especially for a large program.

Any execution or data-placement structure which is hard-coded limits the options of a compiler, and makes it extremely important that the programmer hasn't made a (performance) mistake in parallelizing or distributing the data. So, extended Fortrans such as HPF may actually prevent high performance when porting programs!

So, we must make strong compilers which can handle the original, unannotated, serial programs. Those programs are the ultimate portable programs - they allow the compiler maximum flexibility to produce the best code possible.



next up previous
Next: We Must Analyze Up: Polaris Philosophy Previous: Polaris Philosophy



Jay Hoeflinger
Mon Apr 21 11:52:18 CDT 1997