332 Advanced Computer Architecture

Exercise 7 (Assessed): the ``FullDiagOdd'' Challenge

This is the second of two assessed coursework exercises, both based on ``FullDiagOdd'' computational chemistry application.

You may work in groups of two or three if you wish, but your report must include an explicit statement of who did what.

Submit your work electronically via CATE.

Compiling and running FullDiagOdd

Copy the source code directory tree to your own directory:

cp -r /homes/awb01/Teaching/ACA06/FullDiagOdd ./
Now compile the program:
cd FullDiagOdd
Now you can run the program:
./mat.x86 <5a.dat
This reads input from the file 5a.dat, and writes its output to screen.

You have been provided with a selection of input files of various sizes: the short-running ones are for use with simulators; for serious runs on real hardware use the longer-running examples like ``11a.dat!''.

All-out performance

Basically, your job is to figure out how to run this program as fast as you possibly can, and to write a brief report explaining how you did it.


  1. You can choose any hardware platform you wish. You are encouraged to find interesting and diverse machines to experiment with. The goal is high performance on your chosen platform so it is OK to choose an interesting machine even if it's not the fastest available. On linux type ``cat /proc/cpuinfo''.

    Try the Apple G5s, possibly PDAs, DSP processors, graphics co-processor or FPGA.

  2. Make sure the machine is quiescent before doing timing experiments. Always repeat experiments for statistical significance.

  3. Choose a problem size which suits the performance of the machine you choose - the runtime must be large enough for an improvements to be evident.

  4. The numerical results reported by the application need not be absolutely identical, but if not you must justify the correctness of your results1.

  5. You can achieve full marks even if you do not achieve the maximum performance.

  6. Marks are awarded for

  7. You should produce a compact report in the style of an academic paper for presentation at an international conference such as Supercomputing (www.sc2000.org). The report must not be more than 7 pages in length.

Hints, tools and techniques

Performance analysis tools:

You may find it useful to find out about:


You could investigate the potential benefits of more sophisticated compiler techniques:

Source code modifications

You are strongly invited to modify the source code to investigate performance optimisation opportunities.

How to finish

The main criterion for assessment is this: you should have a reasonably sensible hypothesis for how to improve performance, and you should evaluate your hypothesis in a systematic way, using experiments together, if possible, with analysis.

What to hand in

Hand in a concise report which Please do not write more than seven pages.

Paul Kelly, Imperial College, 2006


... results1
The gcc flag -ffloat-store is sometimes useful to check whether the difference in output is due purely to register allocation.
... machine)2
To do this you will need to build the code using a native Windows compiler. This is easier if you can use the Fortran sources, see the ``OriginalFortran/'' subdirectory.

next_inactive up previous