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:
  1. 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

  2. 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.


(c) Michael Bane