The Perfect Benchmarks collection is a group of Fortran programs that solve a range of problems in large-scale numerical computation. They have been used to measure the effectiveness of techniques for automatic parallelization. This paper describes some experiments performed about six years ago, using those benchmarks, and how the results of those experiments have been applied in the design of a modern parallelizing compiler.
The original experiments were performed at the University of Illinois, an important center for supercomputing applications, on two machines built there during the 1980s: the Alliant FX/8 and the Cedar. In the experiments, the benchmark programs were transformed manually to improve their performance in a parallel environment. The transformations were then analyzed in order to discern the code patterns and data-use requirements that would enable these transformations to be automated. Three types of parallelizing transformations are described: array privatization, parallel reduction, and the use of generalized induction variables.
The authors implicitly recognize that the direct value of this work is limited by the fact that it was done so long ago, on obsolete hardware. However, they argue that the techniques they discovered have proven valuable in the design of Polaris, a modern parallelizing compiler. They note that Polaris can be configured to compile code for the SGI Challenge machines and in many but not all cases can deliver better speedups than SGI’s PFA compiler when applied to the Perfect Benchmarks.