PAPI3:PAPI ipc.3
From PAPIDocs
Jump to: navigation, search


  • PAPI_ipc - PAPI High Level: Simplified call to get instructions per cycle, real and processor time


C Interface

#include <papi.h>
int PAPI_ipc( float * rtime, float * ptime, long_long * ins, float * ipc );

Fortran Interface

#include "fpapi.h"
PAPIF_ipc( C_FLOAT  real_time,  C_FLOAT  proc_time,  C_LONG_LONG  ins,  C_FLOAT  ipc,  C_INT  check )


The first call to PAPI_ipc() will initialize the PAPI High Level interface, set up the counters to monitor PAPI_TOT_INS and PAPI_TOT_CYC events and start the counters. Subsequent calls will read the counters and return total real time, total process time, total instructions since the start of the measurement and the instructions per cycle rate since latest call to PAPI_ipc(). A call to PAPI_stop_counters() will stop the counters from running and then calls such as PAPI_start_counters() can safely be used.


*rtime -- total real time since the first PAPI_ipc() call

*ptime -- total process time since the first PAPI_ipc() call

*ins -- total instructions since the first call

*ipc -- instructions per cycle achieved since the previous call


In addition to the possible errors returned by the various PAPI Low Level calls, the following errors could also be returned:

PAPI_EINVAL The counters were already started by something other than: PAPI_ipc()

PAPI_ENOEVNT The total instructions or total cycles event does not exist.

PAPI_ENOMEM Insufficient memory to complete the operation.

PAPI_ipc() may be called by: the user application program

PAPI_ipc() contains calls to:

  • PAPI_perror()
  • PAPI_library_init()
  • PAPI_get_hardware_info()
  • PAPI_create_eventset()
  • PAPI_add_event()
  • PAPI_start()
  • PAPI_get_real_usec()
  • PAPI_accum()
  • PAPI_shutdown()


This function has no known bugs.

See Also

PAPI_flops(3), PAPI_stop_counters(3), PAPI_set_opt(3), PAPI_flips(3)