Simplified call to get arbitrary events per cycle, real and processor time. More...
|event||event code to be measured (0 defaults to PAPI_TOT_INS)|
|*rtime||total realtime since the first call|
|*ptime||total process time since the first call|
|*ref||incremental reference clock cycles since the last call|
|*core||incremental core clock cycles since the last call|
|*evt||total events since the first call|
|*epc||incremental events per cycle since the last call|
|PAPI_EINVAL||The counters were already started by something other than PAPI_epc().|
|PAPI_ENOEVNT||One of the requested events does not exist.|
|PAPI_ENOMEM||Insufficient memory to complete the operation.|
The first call to PAPI_epc() will initialize the PAPI High Level 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 total real time, total process time, total event counts since the start of the measurement and 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.