MCS 572 HP-Convex Exemplar SPP1200 Starter Problem
Fall 1996
Professor F. B. Hanson
DUE Monday 28 Oct 1996 in class (this is individual,
not group, homework)
Optimize the code
on the UIC HP-Convex Exemplar SPP1200/XA-16 (called the borg)
by doing whatever is necessary to get the best performance, provided
that all variables have the same final storage values in the
optimized code as the original code, WITHIN REASON, WITHOUT MULTITASKING,
and no work is
taken out of the original timing loop, such as using new data or
parameter statement statements. A copy of this code can be found
- by clicking
borgstart.f
- or by using anonymous FTP to `www.math.uic.edu', change directory
to `pub/Hanson' and get the file `borgstart.f'.
In particular, use the Convex timer 'etime' in the code with the
optimizing Convex Fortran compile-link command:
fc -O3 -LST -o start borgstart.f >& start.LST &
and execute as
run start >& start.output &
in order to report
- Summary Page with
- Total user time for original code, using an average of a
sample of 4 user timings.
- Total user time for tuned code, using an average of a
sample of 4 user timings.
- Ratio of the original to tuned user cpu times.
- Output results for original and tuned codes.
- Document with comments what tuning was performed by each tuned loop.
- Recompile and rerun the code with the default (scalar) optimization
option of `-O2' instead place of the parallel optimization option of `O3',
and then compare respective tuned and untuned versions with ratios of
"O2" to "O3" optimization times.
- Compiler optimization reports, before and after optimization tuning.
Be sure to label all above items for identification.
Try to remove as many of the Convex Fortran (fc)
compiler non-optimized informational messages as possible,
use of Fortran 90 array extensions, and use
compiler directives only where needed. Also,
you may correct the logic errors if they are present.
However, the FINAL storage into scalar variables and arrays must
be the same as the original code. The best way to start is to
temporarily put timers around all the loops, in order to find
the most time consuming loop and work down to the smaller loops.
Your final times should be the difference between the end of the code
and the beginning of the code, less timer overhead, as in the original
code.
Try to make the code fit the Convex SPP1200 parallel optimization model.
Your performance will be inversely related to your total time in the
new tuned optimized part of your program, if correct. If your answers
are not correct with respect to the original code, then significant points
will be deducted.
Notes:
Please report to Professor Hanson any problems:
Web Source:http://www.math.uic.edu/~hanson/borgstart.html