PARSEC Hooks Instrumentation API
================================


1.) Overview

The PARSEC Hooks Instrumentation API is a set of functions which are called by
all PARSEC workloads if support for them has been enabled. The hook functions
are executed at predefined locations and signal that the program has entered
a new phase.

Of particular importance are the hook functions __parsec_roi_begin() and
__parsec_roi_end(), which define the Region-of-Interest (ROI) of each program.
The ROI is the code region which includes the "interesting" part of the
benchmark. It includes the computationally intensive, parallel phase of the
workload but not the initialization and shutdown phase. Researchers should
exclude any code that is not part of the ROI from their measurements to avoid
distortions of their results.


2.) License

The PARSEC hooks library is available under the terms of the BSD license. Please
refer to file `LICENSE' for details.


3.) Requirements

A C compiler and GNU Make. To generate the documentation you need `doxygen',
which is not part of the PARSEC distribution. It can be downloaded from its
project web site http://www.doxygen.org/.


4.) Usage

The PARSEC hooks can be enabled by defining the macro ENABLE_PARSEC_HOOKS when
the workloads are built. The build configuration `gcc-hooks' does that by
default.

Researchers can use the hooks to insert their own instrumentation code at the
predefined locations. This library is an implementation that can serve as a
starting point. Some base functionality has been provided that can be enabled
and disabled in file config.h. The Hooks API is specified in header file
hooks.h, and the default implementation is available in hooks.c.


5.) Documentation

The PARSEC hooks are fully documented in the source code. The comments can be
extracted with `doxygen' to create a stand-alone documentation that is easily
accessible. To do so simply change to the source directory `src/' and execute
the documentation generator as follows:

	doxygen

The program will automatically create the documentation for the library as
described in the configuration file `Doxyfile', which can be found in the same
directory. By default the generated documentation is put into the subdirectory
`doc/'.

More information about doxygen can be found on the project web site
http://www.doxygen.org/.

