---
name: "PAPI_epc"
section: "3"
platform: "linux"
package: "libpapi-dev"
version: "7.1.0-5+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/PAPI_epc"
---

# PAPI\_epc(3)

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

## NAME

PAPI\_epc - Simplified call to get arbitrary events per cycle, real and processor time.

## SYNOPSIS

## 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**

*event* event code to be measured (0 defaults to PAPI\_TOT\_INS) \
 *\*rtime* realtime since the latest call \
 *\*ptime* process time since the latest call \
 *\*ref* incremental reference clock cycles since the latest call \
 *\*core* incremental core clock cycles since the latest call \
 *\*evt* events since the latest call \
 *\*epc* incremental events per cycle since the latest call

**Return values**

*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 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()**

## Author

Generated automatically by Doxygen for PAPI from the source code.
