25#pragma GCC visibility push(default)
218#define PAPI_VERSION_NUMBER(maj,min,rev,inc) (((maj)<<24) | ((min)<<16) | ((rev)<<8) | (inc))
219#define PAPI_VERSION_MAJOR(x) (((x)>>24) & 0xff)
220#define PAPI_VERSION_MINOR(x) (((x)>>16) & 0xff)
221#define PAPI_VERSION_REVISION(x) (((x)>>8) & 0xff)
222#define PAPI_VERSION_INCREMENT(x)((x) & 0xff)
226#define PAPI_VERSION PAPI_VERSION_NUMBER(7,1,0,0)
227#define PAPI_VER_CURRENT (PAPI_VERSION & 0xffff0000)
230#define IS_NATIVE( EventCode ) ( ( EventCode & PAPI_NATIVE_MASK ) && !(EventCode & PAPI_PRESET_MASK) )
231#define IS_PRESET( EventCode ) ( ( EventCode & PAPI_PRESET_MASK ) && !(EventCode & PAPI_NATIVE_MASK) )
232#define IS_USER_DEFINED( EventCode ) ( ( EventCode & PAPI_PRESET_MASK ) && (EventCode & PAPI_NATIVE_MASK) )
241#include <sys/types.h>
255#define PAPI_EINVAL -1
256#define PAPI_ENOMEM -2
259#define PAPI_ESBSTR -4
260#define PAPI_ECLOST -5
262#define PAPI_ENOEVNT -7
263#define PAPI_ECNFLCT -8
264#define PAPI_ENOTRUN -9
265#define PAPI_EISRUN -10
266#define PAPI_ENOEVST -11
267#define PAPI_ENOTPRESET -12
268#define PAPI_ENOCNTR -13
269#define PAPI_EMISC -14
270#define PAPI_EPERM -15
271#define PAPI_ENOINIT -16
272#define PAPI_ENOCMP -17
273#define PAPI_ENOSUPP -18
274#define PAPI_ENOIMPL -19
276#define PAPI_EINVAL_DOM -21
277#define PAPI_EATTR -22
278#define PAPI_ECOUNT -23
279#define PAPI_ECOMBO -24
280#define PAPI_ECMP_DISABLED -25
281#define PAPI_EDELAY_INIT -26
282#define PAPI_EMULPASS -27
283#define PAPI_NUM_ERRORS 28
285#define PAPI_NOT_INITED 0
286#define PAPI_LOW_LEVEL_INITED 1
287#define PAPI_HIGH_LEVEL_INITED 2
288#define PAPI_THREAD_LEVEL_INITED 4
304#define PAPI_DOM_USER 0x1
305#define PAPI_DOM_MIN PAPI_DOM_USER
306#define PAPI_DOM_KERNEL 0x2
307#define PAPI_DOM_OTHER 0x4
308#define PAPI_DOM_SUPERVISOR 0x8
309#define PAPI_DOM_ALL (PAPI_DOM_USER|PAPI_DOM_KERNEL|PAPI_DOM_OTHER|PAPI_DOM_SUPERVISOR)
311#define PAPI_DOM_MAX PAPI_DOM_ALL
312#define PAPI_DOM_HWSPEC 0x80000000
323#define PAPI_USR1_TLS 0x0
324#define PAPI_USR2_TLS 0x1
325#define PAPI_TLS_HIGH_LEVEL 0x2
326#define PAPI_NUM_TLS 0x3
327#define PAPI_TLS_USR1 PAPI_USR1_TLS
328#define PAPI_TLS_USR2 PAPI_USR2_TLS
329#define PAPI_TLS_NUM PAPI_NUM_TLS
330#define PAPI_TLS_ALL_THREADS 0x10
336#define PAPI_USR1_LOCK 0x0
337#define PAPI_USR2_LOCK 0x1
338#define PAPI_NUM_LOCK 0x2
339#define PAPI_LOCK_USR1 PAPI_USR1_LOCK
340#define PAPI_LOCK_USR2 PAPI_USR2_LOCK
341#define PAPI_LOCK_NUM PAPI_NUM_LOCK
350#define PAPI_VENDOR_UNKNOWN 0
351#define PAPI_VENDOR_INTEL 1
352#define PAPI_VENDOR_AMD 2
353#define PAPI_VENDOR_IBM 3
354#define PAPI_VENDOR_CRAY 4
355#define PAPI_VENDOR_SUN 5
356#define PAPI_VENDOR_FREESCALE 6
357#define PAPI_VENDOR_ARM 7
358#define PAPI_VENDOR_MIPS 8
359#define PAPI_VENDOR_ARM_ARM 0x41
360#define PAPI_VENDOR_ARM_BROADCOM 0x42
361#define PAPI_VENDOR_ARM_CAVIUM 0x43
362#define PAPI_VENDOR_ARM_FUJITSU 0x46
363#define PAPI_VENDOR_ARM_HISILICON 0x48
364#define PAPI_VENDOR_ARM_APM 0x50
365#define PAPI_VENDOR_ARM_QUALCOMM 0x51
372#define PAPI_GRN_THR 0x1
373#define PAPI_GRN_MIN PAPI_GRN_THR
374#define PAPI_GRN_PROC 0x2
375#define PAPI_GRN_PROCG 0x4
376#define PAPI_GRN_SYS 0x8
377#define PAPI_GRN_SYS_CPU 0x10
378#define PAPI_GRN_MAX PAPI_GRN_SYS_CPU
384#define PAPI_STOPPED 0x01
385#define PAPI_RUNNING 0x02
386#define PAPI_PAUSED 0x04
387#define PAPI_NOT_INIT 0x08
388#define PAPI_OVERFLOWING 0x10
389#define PAPI_PROFILING 0x20
390#define PAPI_MULTIPLEXING 0x40
391#define PAPI_ATTACHED 0x80
392#define PAPI_CPU_ATTACHED 0x100
399#define PAPI_VERB_ECONT 1
400#define PAPI_VERB_ESTOP 2
406#define PAPI_PROFIL_POSIX 0x0
407#define PAPI_PROFIL_RANDOM 0x1
408#define PAPI_PROFIL_WEIGHTED 0x2
409#define PAPI_PROFIL_COMPRESS 0x4
410#define PAPI_PROFIL_BUCKET_16 0x8
411#define PAPI_PROFIL_BUCKET_32 0x10
412#define PAPI_PROFIL_BUCKET_64 0x20
413#define PAPI_PROFIL_FORCE_SW 0x40
414#define PAPI_PROFIL_DATA_EAR 0x80
415#define PAPI_PROFIL_INST_EAR 0x100
416#define PAPI_PROFIL_BUCKETS (PAPI_PROFIL_BUCKET_16 | PAPI_PROFIL_BUCKET_32 | PAPI_PROFIL_BUCKET_64)
421#define PAPI_OVERFLOW_FORCE_SW 0x40
422#define PAPI_OVERFLOW_HARDWARE 0x80
428#define PAPI_MULTIPLEX_DEFAULT 0x0
429#define PAPI_MULTIPLEX_FORCE_SW 0x1
435#define PAPI_INHERIT_ALL 1
436#define PAPI_INHERIT_NONE 0
441#define PAPI_MULTIPLEX 3
446#define PAPI_DEF_MPX_NS 8
447#define PAPI_MAX_MPX_CTRS 11
448#define PAPI_PROFIL 12
449#define PAPI_PRELOAD 13
450#define PAPI_CLOCKRATE 14
451#define PAPI_MAX_HWCTRS 15
452#define PAPI_HWINFO 16
453#define PAPI_EXEINFO 17
454#define PAPI_MAX_CPUS 18
455#define PAPI_ATTACH 19
456#define PAPI_SHLIBINFO 20
457#define PAPI_LIB_VERSION 21
458#define PAPI_COMPONENTINFO 22
460#define PAPI_DATA_ADDRESS 23
461#define PAPI_INSTR_ADDRESS 24
462#define PAPI_DEF_ITIMER 25
463#define PAPI_DEF_ITIMER_NS 26
465#define PAPI_CPU_ATTACH 27
466#define PAPI_INHERIT 28
467#define PAPI_USER_EVENTS_FILE 29
469#define PAPI_INIT_SLOTS 64
472#define PAPI_MIN_STR_LEN 64
473#define PAPI_MAX_STR_LEN 128
474#define PAPI_2MAX_STR_LEN 256
475#define PAPI_HUGE_STR_LEN 1024
477#define PAPI_PMU_MAX 80
478#define PAPI_DERIVED 0x1
518#define PAPI_ENUM_ALL PAPI_ENUM_EVENTS
520#define PAPI_PRESET_BIT_MSC (1 << PAPI_PRESET_ENUM_MSC)
521#define PAPI_PRESET_BIT_INS (1 << PAPI_PRESET_ENUM_INS)
522#define PAPI_PRESET_BIT_IDL (1 << PAPI_PRESET_ENUM_IDL)
523#define PAPI_PRESET_BIT_BR (1 << PAPI_PRESET_ENUM_BR)
524#define PAPI_PRESET_BIT_CND (1 << PAPI_PRESET_ENUM_CND)
525#define PAPI_PRESET_BIT_MEM (1 << PAPI_PRESET_ENUM_MEM)
526#define PAPI_PRESET_BIT_CACH (1 << PAPI_PRESET_ENUM_CACH)
527#define PAPI_PRESET_BIT_L1 (1 << PAPI_PRESET_ENUM_L1)
528#define PAPI_PRESET_BIT_L2 (1 << PAPI_PRESET_ENUM_L2)
529#define PAPI_PRESET_BIT_L3 (1 << PAPI_PRESET_ENUM_L3)
530#define PAPI_PRESET_BIT_TLB (1 << PAPI_PRESET_ENUM_TLB)
531#define PAPI_PRESET_BIT_FP (1 << PAPI_PRESET_ENUM_FP)
533#define PAPI_NTV_GROUP_AND_MASK 0x00FF0000
534#define PAPI_NTV_GROUP_SHIFT 16
560#define long_long long long
561#define u_long_long unsigned long long
568 typedef struct _papi_all_thr_spec {
575 long long overflow_vector,
void *context);
580 typedef struct _papi_sprofil {
591 typedef struct _papi_itimer_option {
599 typedef struct _papi_inherit_option {
605 typedef struct _papi_domain_option {
612 typedef struct _papi_granularity_option {
619 typedef struct _papi_preload_option {
621 char lib_preload_sep;
627 typedef struct _papi_component_option {
641 int num_preset_events;
644 int available_domains;
645 int default_granularity;
646 int available_granularities;
647 int hardware_intr_sig;
651 unsigned int hardware_intr:1;
652 unsigned int precise_intr:1;
653 unsigned int posix1b_timers:1;
654 unsigned int kernel_profile:1;
655 unsigned int kernel_multiplex:1;
656 unsigned int fast_counter_read:1;
657 unsigned int fast_real_timer:1;
658 unsigned int fast_virtual_timer:1;
660 unsigned int attach_must_ptrace:1;
661 unsigned int cntr_umasks:1;
665 unsigned int reserved_bits:19;
669 typedef struct _papi_mpx_info {
678 typedef struct _papi_debug_option {
685 typedef struct _papi_address_map {
697 typedef struct _papi_program_info {
703 typedef struct _papi_shared_lib_info {
719#define PAPI_MH_TYPE_EMPTY 0x0
720#define PAPI_MH_TYPE_INST 0x1
721#define PAPI_MH_TYPE_DATA 0x2
722#define PAPI_MH_TYPE_VECTOR 0x4
723#define PAPI_MH_TYPE_TRACE 0x8
724#define PAPI_MH_TYPE_UNIFIED (PAPI_MH_TYPE_INST|PAPI_MH_TYPE_DATA)
725#define PAPI_MH_CACHE_TYPE(a) (a & 0xf)
726#define PAPI_MH_TYPE_WT 0x00
727#define PAPI_MH_TYPE_WB 0x10
728#define PAPI_MH_CACHE_WRITE_POLICY(a) (a & 0xf0)
729#define PAPI_MH_TYPE_UNKNOWN 0x000
730#define PAPI_MH_TYPE_LRU 0x100
731#define PAPI_MH_TYPE_PSEUDO_LRU 0x200
732#define PAPI_MH_TYPE_FIFO 0x400
733#define PAPI_MH_CACHE_REPLACEMENT_POLICY(a) (a & 0xf00)
734#define PAPI_MH_TYPE_TLB 0x1000
735#define PAPI_MH_TYPE_PREF 0x2000
736#define PAPI_MH_TYPE_RD_ALLOC 0x10000
737#define PAPI_MH_TYPE_WR_ALLOC 0x20000
738#define PAPI_MH_TYPE_RW_ALLOC 0x40000
739#define PAPI_MH_CACHE_ALLOCATION_POLICY(a) (a & 0xf0000)
740#define PAPI_MH_MAX_LEVELS 6
741#define PAPI_MAX_MEM_HIERARCHY_LEVELS 4
744 typedef struct _papi_mh_tlb_info {
752 typedef struct _papi_mh_cache_info {
761 typedef struct _papi_mh_level_info {
768 typedef struct _papi_mh_info {
775 typedef struct _papi_hw_info {
811 typedef struct _papi_attach_option {
817 typedef struct _papi_cpu_option {
819 unsigned int cpu_num;
823 typedef struct _papi_multiplex_option {
831 typedef struct _papi_addr_range_option {
866 typedef struct _dmem_t {
870 long long high_water_mark;
883#define PAPIF_DMEM_VMPEAK 1
884#define PAPIF_DMEM_VMSIZE 2
885#define PAPIF_DMEM_RESIDENT 3
886#define PAPIF_DMEM_HIGH_WATER 4
887#define PAPIF_DMEM_SHARED 5
888#define PAPIF_DMEM_TEXT 6
889#define PAPIF_DMEM_LIBRARY 7
890#define PAPIF_DMEM_HEAP 8
891#define PAPIF_DMEM_LOCKED 9
892#define PAPIF_DMEM_STACK 10
893#define PAPIF_DMEM_PAGESIZE 11
894#define PAPIF_DMEM_PTE 12
895#define PAPIF_DMEM_MAXVAL 12
897#define PAPI_MAX_INFO_TERMS 12
959 unsigned int event_code;
987 unsigned int event_type;
1183 unsigned scale,
int EventSet,
int EventCode,
1220 int PAPI_flips_rate(
int event,
float *rtime,
float *ptime,
long long *flpins,
float *mflips);
1221 int PAPI_flops_rate(
int event,
float *rtime,
float *ptime,
long long * flpops,
float *mflops);
1222 int PAPI_ipc(
float *rtime,
float *ptime,
long long * ins,
float *ipc);
1223 int PAPI_epc(
int event,
float *rtime,
float *ptime,
long long *ref,
long long *core,
long long *evt,
float *epc);
1247#define PAPI_COMPONENT_INDEX(a) PAPI_get_event_component(a)
1248#define PAPI_descr_error(a) PAPI_strerror(a)
1254#pragma GCC visibility pop
static papi_handle_t handle
static const PAPI_hw_info_t * hw_info
static int Event[MAX_EVENTS]
Accumulate and reset counters in an EventSet.
add PAPI preset or native hardware event to an event set
add multiple PAPI presets or native hardware events to an event set
add PAPI preset or native hardware event by name to an EventSet
Assign a component index to an existing but empty EventSet.
Attach PAPI event set to the specified thread id.
Empty and destroy an EventSet.
Create a new empty PAPI EventSet.
Empty and destroy an EventSet.
Detach PAPI event set from previously specified thread id and restore to executing thread.
disables the named component
disables the specified component
Enumerate PAPI preset or native events for a given component.
returns handle of next device type
Enumerate PAPI preset or native events.
Simplified call to get arbitrary events per cycle, real and processor time.
Convert a numeric hardware event code to a name.
Convert a name to a numeric hardware event code.
Simplified call to get Mflips/s (floating point instruction rate), real and processor time.
Simplified call to get Mflops/s (floating point operation rate), real and processor time.
Get component specific PAPI options.
returns the component index for the named component
get information about a specific software component
returns device attributes
returns device type attributes
Get information about the dynamic memory usage of the current program.
return component an event belongs to
Get the event's name and description info.
return index for component an eventset is assigned to
Get the multiplexing status of specified event set.
Get PAPI library or event set options.
converts an overflow vector into an array of indexes to overflowing events
Retrieve a pointer to a thread specific data structure.
Read performance events inside of a region and store the difference to the corresponding beginning of...
Read performance events at the beginning of a region.
Read performance events at the end of a region and store the difference to the corresponding beginnin...
Simplified call to get instructions per cycle, real and processor time.
initialize the PAPI library.
list the events in an event set
List the registered thread ids.
Lock one of two mutex variables defined in papi.h.
Return the number of hardware counters for the specified component.
Return the number of events in an event set.
Set up an event set to begin registering overflows.
Produces a string on standard error, describing the last library error.
Generate a histogram of hardware counter overflows vs. PC addresses.
Query if PAPI event exists.
Query if a named PAPI event exists.
Read hardware counters with a timestamp.
Read hardware counters from an event set.
removes a hardware event from a PAPI event set.
Remove an array of hardware event codes from a PAPI event set.
removes a named hardware event from a PAPI event set.
Reset the hardware event counts in an event set.
Set the default counting domain for new event sets bound to the specified component.
Set the default counting granularity for eventsets bound to the specified component.
Set the current debug level for error output from PAPI.
Set the default counting domain for new event sets bound to the cpu component.
Set the default counting granularity for eventsets bound to the cpu component.
Convert a standard event set to a multiplexed event set.
Set PAPI library or event set options.
Store a pointer to a thread specific data structure.
Generate PC histogram data from multiple code regions where hardware counter overflow occurs.
Start counting hardware events in an event set.
Return the counting state of an EventSet.
Stop counting hardware events in an event set.
Returns a string describing the PAPI error code.
Initialize thread support in the PAPI library.
Unlock one of the mutex variables defined in papi.h.
Write counter values into counters.
volatile int buf[CACHE_FLUSH_BUFFER_SIZE_INTS]
#define PAPI_MAX_MEM_HIERARCHY_LEVELS
#define PAPI_2MAX_STR_LEN
#define PAPI_MAX_INFO_TERMS
#define PAPI_HUGE_STR_LEN
long long PAPI_get_virt_cyc(void)
long long PAPI_get_real_cyc(void)
int PAPI_register_thread(void)
int PAPI_num_components(void)
long long PAPI_get_virt_nsec(void)
int PAPI_is_initialized(void)
long long PAPI_get_real_nsec(void)
int PAPI_multiplex_init(void)
unsigned long PAPI_thread_id(void)
long long PAPI_get_virt_usec(void)
int PAPI_unregister_thread(void)
const PAPI_exe_info_t * PAPI_get_executable_info(void)
long long PAPI_get_real_usec(void)
const PAPI_shlib_info_t * PAPI_get_shared_lib_info(void)
const PAPI_hw_info_t * PAPI_get_hardware_info(void)
@ PAPI_DEV_TYPE_ATTR__INT_COUNT
@ PAPI_DEV_TYPE_ATTR__INT_PAPI_ID
@ PAPI_DEV_TYPE_ATTR__CHAR_STATUS
@ PAPI_DEV_TYPE_ATTR__INT_VENDOR_ID
@ PAPI_DEV_TYPE_ATTR__CHAR_NAME
@ PAPI_DEV_TYPE_ID__MAX_NUM
@ PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_LINE_SIZE
@ PAPI_DEV_ATTR__CPU_UINT_SOCKET_COUNT
@ PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_LINE_SIZE
@ PAPI_DEV_ATTR__ROCM_CHAR_DEVICE_NAME
@ PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_LINE_COUNT
@ PAPI_DEV_ATTR__CPU_UINT_CORE_COUNT
@ PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_Z
@ PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_SIZE
@ PAPI_DEV_ATTR__CUDA_UINT_WARP_SIZE
@ PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_X
@ PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MINOR
@ PAPI_DEV_ATTR__CPU_CHAR_NAME
@ PAPI_DEV_ATTR__CUDA_CHAR_DEVICE_NAME
@ PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_LINE_SIZE
@ PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_X
@ PAPI_DEV_ATTR__CUDA_UINT_MANAGED_MEM
@ PAPI_DEV_ATTR__CUDA_UINT_SM_COUNT
@ PAPI_DEV_ATTR__CUDA_UINT_SHM_PER_BLK
@ PAPI_DEV_ATTR__ROCM_UINT_CU_COUNT
@ PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_Y
@ PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MAJOR
@ PAPI_DEV_ATTR__ROCM_UINT_WAVEFRONT_SIZE
@ PAPI_DEV_ATTR__CPU_UINT_NUMA_COUNT
@ PAPI_DEV_ATTR__CPU_UINT_THR_PER_NUMA
@ PAPI_DEV_ATTR__CUDA_UINT_MAP_HOST_MEM
@ PAPI_DEV_ATTR__CUDA_UINT_MULTI_KERNEL
@ PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_ASSOC
@ PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_LINE_COUNT
@ PAPI_DEV_ATTR__CUDA_UINT_BLK_PER_SM
@ PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_SIZE
@ PAPI_DEV_ATTR__CUDA_UINT_MEMCPY_OVERLAP
@ PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_Y
@ PAPI_DEV_ATTR__CUDA_ULONG_UID
@ PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_Y
@ PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_X
@ PAPI_DEV_ATTR__CPU_UINT_THREAD_COUNT
@ PAPI_DEV_ATTR__ROCM_UINT_WAVE_PER_CU
@ PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_LINE_COUNT
@ PAPI_DEV_ATTR__ROCM_UINT_SHM_PER_WG
@ PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_SIZE
@ PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_SIZE
@ PAPI_DEV_ATTR__ROCM_UINT_COMP_CAP_MAJOR
@ PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_Y
@ PAPI_DEV_ATTR__CPU_UINT_MODEL
@ PAPI_DEV_ATTR__CUDA_UINT_SHM_PER_SM
@ PAPI_DEV_ATTR__CPU_UINT_THR_NUMA_AFFINITY
@ PAPI_DEV_ATTR__CUDA_UINT_THR_PER_BLK
@ PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_ASSOC
@ PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_X
@ PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_ASSOC
@ PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_ASSOC
@ PAPI_DEV_ATTR__CUDA_UINT_UNIFIED_ADDR
@ PAPI_DEV_ATTR__CPU_UINT_FAMILY
@ PAPI_DEV_ATTR__ROCM_UINT_COMP_CAP_MINOR
@ PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_Z
@ PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_LINE_COUNT
@ PAPI_DEV_ATTR__CPU_UINT_NUMA_MEM_SIZE
@ PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_Z
@ PAPI_DEV_ATTR__ROCM_ULONG_UID
@ PAPI_DEV_ATTR__ROCM_UINT_WORKGROUP_SIZE
@ PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_Z
@ PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_LINE_SIZE
@ PAPI_DEV_ATTR__ROCM_UINT_SIMD_PER_CU
@ PAPI_DEV_ATTR__CPU_UINT_STEPPING
@ PAPI_DEV_TYPE_ENUM__CUDA
@ PAPI_DEV_TYPE_ENUM__ALL
@ PAPI_DEV_TYPE_ENUM__ROCM
@ PAPI_DEV_TYPE_ENUM__CPU
@ PAPI_DEV_TYPE_ENUM__FIRST
static long long values[NUM_EVENTS]
static struct timeval start
static struct counter_info * event_info
char * PAPI_user_defined_events_file_t
@ PAPI_UPDATETYPE_FIXEDFREQ
@ PAPI_UPDATETYPE_ARBITRARY
@ PAPI_NTV_ENUM_UMASK_COMBOS
void(* PAPI_overflow_handler_t)(int EventSet, void *address, long long overflow_vector, void *context)
#define PAPI_MH_MAX_LEVELS
unsigned long PAPI_thread_id_t
int(* PAPI_debug_handler_t)(int code)
@ PAPI_VALUETYPE_ABSOLUTE
@ PAPI_VALUETYPE_RUNNING_SUM
int PAPI_num_hwctrs(void)
@ PAPI_TIMESCOPE_UNTIL_NEXT
@ PAPI_TIMESCOPE_SINCE_LAST
@ PAPI_TIMESCOPE_SINCE_START
static int num_native_events
static double array[ARRAYSIZE]
static char stack[2 *PAPI_HUGE_STR_LEN]
static int attach(hwd_control_state_t *ctl, unsigned long tid)
int data_type[MAX_EVENTS]
char units[MAX_EVENTS][BUFSIZ]
void handler(int EventSet, void *address, long long overflow_vector, void *context)
address range specification for range restricted counting if both are zero, range is disabled
get the executable's address space info
A pointer to the following is passed to PAPI_get_dmem_info()
get the executable's info
mh for mem hierarchy maybe?
A pointer to the following is passed to PAPI_set/get_opt()
char * PAPI_user_defined_events_file_t