PAPI

PAPI provides the tool designer and application engineer with a consistent interface and methodology for use of the performance counter hardware found in most major microprocessors. PAPI enables software engineers to see, in near real time, the relation between software performance and processor events.

This software will be of interest only to HPC experts.

Availability and Restrictions

PAPI is available on Oakley, Ruby, and Owens Clusters. The versions currently available at OSC are:

Version Oakley Ruby Owens Notes
5.2.0     System Install* No Module Needed
5.4.1 X* X*    
* : Current Default Version

You can use module spider papi to view available modules for a given machine. For now, PAPI is available only with the Intel and gnu compilers. Feel free to contact OSC Help if you need other versions for your work.

Access

PAPI is available without restriction to all OSC users.

Usage on Oakley

Set-up

To load the default PAPI library, run the following command: module load papi . To load a particular version, use  module load papi/version . For example, use  module load papi/5.4.1  to load PAPI version 5.4.1. You can use module spider papi  to view available modules.

Building With PAPI

The PAPI library provides the following variables for use at build time:

Variable Use
$PAPI_CFLAGS Use during your compilation step for C/C++ programs
$PAPI_FFLAGS Use during your compilation step for FORTRAN programs 
$PAPI_LIB Use during your linking step programs

For example, to build the code myprog.c with the PAPI library you would use:

module load papi
gcc -c myprog.c $PAPI_CFLAGS
gcc -o myprog myprog.o $PAPI_LIB

Batch Usage

When you log into oakley.osc.edu you are actually logged into a linux box referred to as the login node. To gain access to the mutiple processors in the computing environment, you must submit your job to the batch system for execution. Batch jobs can request mutiple nodes/cores and compute time up to the limits of the OSC systems. Refer to Queues and Reservations and Batch Limit Rules for more info.  Batch jobs run on the compute nodes of the system and not on the login node. It is desirable for big problems since more resources can be used.

Usage on Ruby

Set-up

To load the default PAPI library, run the following command: module load papi . To load a particular version, use  module load papi/version . For example, use  module load papi/5.4.1  to load PAPI version 5.4.1. You can use module spider papi  to view available modules.

Building With PAPI

The PAPI library provides the following variables for use at build time:

Variable Use
$PAPI_CFLAGS Use during your compilation step for C/C++ programs
$PAPI_FFLAGS Use during your compilation step for FORTRAN programs 
$PAPI_LIB Use during your linking step programs

For example, to build the code myprog.c with the PAPI library you would use:

module load papi
gcc -c myprog.c $PAPI_CFLAGS
gcc -o myprog myprog.o $PAPI_LIB

Batch Usage

When you log into ruby.osc.edu you are actually logged into a linux box referred to as the login node. To gain access to the mutiple processors in the computing environment, you must submit your job to the batch system for execution. Batch jobs can request mutiple nodes/cores and compute time up to the limits of the OSC systems. Refer to Queues and Reservations and Batch Limit Rules for more info. 

Usage on Owens

Set-up

Since PAPI is a System Install, no module is needed to run the application.

Building With PAPI

To build the code myprog.c with the PAPI library you would use:

gcc -c myprog.c -lpapi
gcc -o myprog myprog.o -lpapi

Batch Usage

When you log into owens.osc.edu you are actually logged into a linux box referred to as the login node. To gain access to the mutiple processors in the computing environment, you must submit your job to the batch system for execution. Batch jobs can request mutiple nodes/cores and compute time up to the limits of the OSC systems. Refer to Queues and Reservations and Batch Limit Rules for more info. 

Further Reading