/** @class PAPI_accum_counters * @brief Accumulate and reset counters. * * @par C Interface: * \#include <papi.h> @n * int PAPI_accum_counters( long long *values, int array_len ); * * @param *values * an array to hold the counter values of the counting events * @param arry_len * the number of items in the *events array * * @pre * These calls assume an initialized PAPI library and a properly added event set. * * @post * The counters are reset and left running after the call. * * @retval PAPI_EINVAL * One or more of the arguments is invalid. * @retval PAPI_ESYS * A system or C library call failed inside PAPI, see the errno variable. * * PAPI_accum_counters() adds the event counters into the array *values. * * @code do_100events(); if ( PAPI_read_counters( values, num_hwcntrs ) != PAPI_OK ) handlw_error(1); // values[0] now equals 100 do_100events(); if ( PAPI_accum_counters( values, num_hwcntrs ) != PAPI_OK ) handle_error(1); // values[0] now equals 200 values[0] = -100; do_100events(); if ( PAPI_accum_counters(values, num_hwcntrs ) != PAPI_OK ) handle_error(); // values[0] now equals 0 * @endcode * * @see PAPI_set_opt() PAPI_start_counters() */ int PAPI_accum_counters( long long *values, int array_len ) { if ( values == NULL || array_len <= 0 ) return PAPI_EINVAL; return ( _internal_hl_read_cnts( values, array_len, HL_ACCUM ) ); }
/** @class PAPI_read_counters * @brief Read and reset counters. * * @par C Interface: * \#include <papi.h> @n * int PAPI_read_counters( long long *values, int array_len ); * * @param *values * an array to hold the counter values of the counting events * @param arry_len * the number of items in the *events array * * @pre * These calls assume an initialized PAPI library and a properly added event set. * * @post * The counters are reset and left running after the call. * * @retval PAPI_EINVAL * One or more of the arguments is invalid. * @retval PAPI_ESYS * A system or C library call failed inside PAPI, see the errno variable. * * PAPI_read_counters() copies the event counters into the array *values. * * @code do_100events(); if ( PAPI_read_counters( values, num_hwcntrs ) != PAPI_OK ) handlw_error(1); // values[0] now equals 100 do_100events(); if ( PAPI_accum_counters( values, num_hwcntrs ) != PAPI_OK ) handle_error(1); // values[0] now equals 200 values[0] = -100; do_100events(); if ( PAPI_accum_counters(values, num_hwcntrs ) != PAPI_OK ) handle_error(); // values[0] now equals 0 * @endcode * * @see PAPI_set_opt() PAPI_start_counters() */ int PAPI_read_counters( long long *values, int array_len ) { return ( _internal_hl_read_cnts( values, array_len, HL_READ ) ); }
int PAPI_accum_counters(long long * values, int array_len) { return (_internal_hl_read_cnts(values, array_len, PAPI_HL_ACCUM)); }