Ovaltine: An Overhead Profiler for Single-Address-Space Parallel Programs
Introduction
I worked on this EPSRC funded
project from July 1999 until December 2001. The aim of the project was to investigate and
develop a tool to support the overheads analysis approach to parallel
performance optimisation using the ``Overheads Analysis'' methodology.
What is Ovaltine
Parallel programs often do not obtain ideal speed up. This is due to time being
lost in various overheads, such as load imbalance, synchronisation costs, remote
memory access and replicated code. Ovaltine is a tool to provide users,
automatically, determine such overheads in an OpenMP code. This helps users to
tune their code to a realistic best implementation. Currently, Ovaltine only
supports Fortran 77.
Ovaltine is written in Java. It also requires the Polaris
p-scanner tool and,
optionally, the PAPI library for portable access to CPU hardware counters.
How does it Work?
There are two stage: instrumentation and analysis. These have been purposely separated for the following reasons:
- the instrumented code can be used on various target machines, with different compilation flags on various numbers of processors according to the user's requirements
- timing codes often involves setting up a special environment (such as single user mode, batch systems or cpusets) and these often require user intervenion
You can use Ovaltine to analysis either all the code, or you can define an "OV region".
Instrumentation
Firstly, Polaris
scanner is used to help construct an abstract syntax tree (AST) for each of the
input files. Each AST is then converted into Ovaltine's internal
representation(IR). For each overhead measured, Ovaltine instruments the
relevant section of the IR
(ie complete or region of code), by adding counters and timers and making use of
PAPI calls. Finally, the instrumented code is written out as Fortran files for
the user to compile and execute.
Analysis
Once the user has run the instrumented code, s/he can analyse the
results. Running Ovaltine in analysis mode reconstructs the ASTs from the original source files and then uses the timer and counter results to determine the overheads at various points in the code. Ovaltine lists these and a summary of the major overheads.
A more detailed overview of Ovaltine was given in a presentation by Michael at the European Workshop of OpenMP, Edinburgh (Sept 2000):
How to Get Hold of a Copy of Ovaltine
Ovaltine is currently (Winter 2001/2002) being evaluated by selected testers.
You can download this version at ftp://ftp.cs.man.ac.uk/pub/cnc/ovaltine
Researchers and Investigators
Ovaltine was written by Michael Bane
with Graham Riley.
The investigators were John Gurd and Len Freeman.
The final report is now available for download.