PAPI3:PAPI read.3
From PAPIDocs
(Redirected from PAPI3:PAPI read ts.3)
Jump to: navigation, search


Contents

Name

  • PAPI_read - read hardware counters from an event set
  • PAPI_read_ts - read hardware counters with a timestamp
  • PAPI_accum - accumulate and reset counters in an event set

Synopsis

C Interface

#include <papi.h>
int PAPI_read(int  EventSet, long_long * values );
int PAPI_read_ts(int  EventSet, long_long * values, long_long * cyc );
int PAPI_accum(int  EventSet, long_long * values );

Fortran Interface

#include fpapi.h
PAPIF_read(C_INT  EventSet,  C_LONG_LONG(*)  values,  C_INT  check )
PAPIF_read_ts(C_INT  EventSet,  C_LONG_LONG(*)  values,  C_LONG_LONG(*)  cyc,  C_INT  check)
PAPIF_accum(C_INT  EventSet,  C_LONG_LONG(*)  values,  C_INT  check )

Description

These calls assume an initialized PAPI library and a properly added event set.

PAPI_read() copies the counters of the indicated event set into the array values . The counters continue counting after the read.

PAPI_read_ts() copies the counters of the indicated event set into the array values . It also places a real-time cycle timestamp into cyc . The counters continue counting after the read.

PAPI_accum() adds the counters of the indicated event set into the array values . The counters are zeroed and continue counting after the operation.

Note the differences between PAPI_read() and PAPI_accum(), specifically that PAPI_accum() resets the values array to zero.

Arguments

EventSet -- an integer handle for a PAPI Event Set as created by PAPI_create_eventset (3)

*values -- an array to hold the counter values of the counting events

Errors

PAPI_EINVAL One or more of the arguments is invalid.

PAPI_ESYS A system or C library call failed inside PAPI, see the errno variable.

PAPI_ENOEVST The event set specified does not exist.

Examples

do_100events();
if (PAPI_read(EventSet, values) != PAPI_OK)
handle_error(1);
/* values[0] now equals 100 */
do_100events();
if (PAPI_accum(EventSet, values) != PAPI_OK)
handle_error(1);
/* values[0] now equals 200 */
values[0] = -100;
do_100events();
if (PAPI_accum(EventSet, values) != PAPI_OK)
handle_error(1);
/* values[0] now equals 0 */

Bugs

These functions have no known bugs.

See Also

PAPI_start(3), PAPI(3), PAPIF(3), PAPI_set_opt(3), PAPI_reset(3)