PAPI 7.1.0.0
Loading...
Searching...
No Matches
PAPI_epc Class Reference

Simplified call to get arbitrary events per cycle, real and processor time. More...

Detailed Description

C Interface:
#include <papi.h>
int PAPI_epc( int event, float *rtime, float *ptime, long long *ref, long long *core, long long *evt, float *epc );
Parameters
eventevent code to be measured (0 defaults to PAPI_TOT_INS)
*rtimerealtime since the latest call
*ptimeprocess time since the latest call
*refincremental reference clock cycles since the latest call
*coreincremental core clock cycles since the latest call
*evtevents since the latest call
*epcincremental events per cycle since the latest call
Return values
PAPI_EINVALThe counters were already started by something other than PAPI_epc().
PAPI_ENOEVNTOne of the requested events does not exist.
PAPI_ENOMEMInsufficient memory to complete the operation.

The first call to PAPI_epc() will initialize the PAPI interface, set up the counters to monitor the user specified event, PAPI_TOT_CYC, and PAPI_REF_CYC (if it exists) and start the counters.

Subsequent calls will read the counters and return real time, process time, event counts, the core and reference cycle count and EPC rate since the latest call to PAPI_epc().

PAPI_epc() can provide a more detailed look at algorithm efficiency in light of clock variability in modern cpus. MFLOPS is no longer an adequate description of peak performance if clock rates can arbitrarily speed up or slow down. By allowing a user specified event and reporting reference cycles, core cycles and real time, PAPI_epc provides the information to compute an accurate effective clock rate, and an accurate measure of computational throughput. Note that PAPI_epc() is thread-safe and can therefore be called by multiple threads.

See also
PAPI_flips_rate()
PAPI_flops_rate()
PAPI_ipc()
PAPI_rate_stop()

The documentation for this class was generated from the following file: