Next: Conclusions Up: Experimental Results Previous: An Experiment with

Hand-written Comparison

To illustrate the performance of our compiler, we present benchmark results from four programs and the first 10 Livermore loop kernels. solves a system of linear equations with partial pivoting. program simulates the universe using the algorithm in [49]. program predicts the stock option pricing using stochastic volatility European model [68]. program calculates the value of , using numerical integration. The Livermore kernels are 24 loops abstracted from actual production codes that have been widely used to evaluate the performance of various computer systems. Data for all programs were block distributed and were written outside of the compiler group at NPAC by experienced message passing programmers.

Tables and show the performance of compiler generated codes () and hand-written f77+ MP code. The tables contain data from running these programs with a varying number of processors on Intel iPSC/860.

We observe that the performance of the compiler generated codes are usually within a factor of 2 of the hand-written codes. This is due to the fact that an experienced programmer can incorporate more optimizations than our compiler currently does. For example, a programmer can combine or eliminate some of the communication or some of the intra-processor temporary copying. The compiler uses a more generic packing routine, whereas a programmer working by handcan combine communication for the same source and destination for different arrays. Another observation is that our run-time system shift routine is slower than the programmer's shift routines.


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