25 #pragma GCC visibility push(default) 216 #define PAPI_VERSION_NUMBER(maj,min,rev,inc) (((maj)<<24) | ((min)<<16) | ((rev)<<8) | (inc)) 217 #define PAPI_VERSION_MAJOR(x) (((x)>>24) & 0xff) 218 #define PAPI_VERSION_MINOR(x) (((x)>>16) & 0xff) 219 #define PAPI_VERSION_REVISION(x) (((x)>>8) & 0xff) 220 #define PAPI_VERSION_INCREMENT(x)((x) & 0xff) 224 #define PAPI_VERSION PAPI_VERSION_NUMBER(5,7,0,0) 225 #define PAPI_VER_CURRENT (PAPI_VERSION & 0xffff0000) 228 #define IS_NATIVE( EventCode ) ( ( EventCode & PAPI_NATIVE_MASK ) && !(EventCode & PAPI_PRESET_MASK) ) 229 #define IS_PRESET( EventCode ) ( ( EventCode & PAPI_PRESET_MASK ) && !(EventCode & PAPI_NATIVE_MASK) ) 230 #define IS_USER_DEFINED( EventCode ) ( ( EventCode & PAPI_PRESET_MASK ) && (EventCode & PAPI_NATIVE_MASK) ) 239 #include <sys/types.h> 253 #define PAPI_EINVAL -1 254 #define PAPI_ENOMEM -2 257 #define PAPI_ESBSTR -4 258 #define PAPI_ECLOST -5 260 #define PAPI_ENOEVNT -7 261 #define PAPI_ECNFLCT -8 262 #define PAPI_ENOTRUN -9 263 #define PAPI_EISRUN -10 264 #define PAPI_ENOEVST -11 265 #define PAPI_ENOTPRESET -12 266 #define PAPI_ENOCNTR -13 267 #define PAPI_EMISC -14 268 #define PAPI_EPERM -15 269 #define PAPI_ENOINIT -16 270 #define PAPI_ENOCMP -17 271 #define PAPI_ENOSUPP -18 272 #define PAPI_ENOIMPL -19 273 #define PAPI_EBUF -20 274 #define PAPI_EINVAL_DOM -21 275 #define PAPI_EATTR -22 276 #define PAPI_ECOUNT -23 277 #define PAPI_ECOMBO -24 278 #define PAPI_ECMP_DISABLED -25 279 #define PAPI_NUM_ERRORS 26 281 #define PAPI_NOT_INITED 0 282 #define PAPI_LOW_LEVEL_INITED 1 283 #define PAPI_HIGH_LEVEL_INITED 2 284 #define PAPI_THREAD_LEVEL_INITED 4 299 #define PAPI_DOM_USER 0x1 300 #define PAPI_DOM_MIN PAPI_DOM_USER 301 #define PAPI_DOM_KERNEL 0x2 302 #define PAPI_DOM_OTHER 0x4 303 #define PAPI_DOM_SUPERVISOR 0x8 304 #define PAPI_DOM_ALL (PAPI_DOM_USER|PAPI_DOM_KERNEL|PAPI_DOM_OTHER|PAPI_DOM_SUPERVISOR) 306 #define PAPI_DOM_MAX PAPI_DOM_ALL 307 #define PAPI_DOM_HWSPEC 0x80000000 318 #define PAPI_USR1_TLS 0x0 319 #define PAPI_USR2_TLS 0x1 320 #define PAPI_HIGH_LEVEL_TLS 0x2 321 #define PAPI_NUM_TLS 0x3 322 #define PAPI_TLS_USR1 PAPI_USR1_TLS 323 #define PAPI_TLS_USR2 PAPI_USR2_TLS 324 #define PAPI_TLS_HIGH_LEVEL PAPI_HIGH_LEVEL_TLS 325 #define PAPI_TLS_NUM PAPI_NUM_TLS 326 #define PAPI_TLS_ALL_THREADS 0x10 332 #define PAPI_USR1_LOCK 0x0 333 #define PAPI_USR2_LOCK 0x1 334 #define PAPI_NUM_LOCK 0x2 335 #define PAPI_LOCK_USR1 PAPI_USR1_LOCK 336 #define PAPI_LOCK_USR2 PAPI_USR2_LOCK 337 #define PAPI_LOCK_NUM PAPI_NUM_LOCK 346 #define PAPI_VENDOR_UNKNOWN 0 347 #define PAPI_VENDOR_INTEL 1 348 #define PAPI_VENDOR_AMD 2 349 #define PAPI_VENDOR_IBM 3 350 #define PAPI_VENDOR_CRAY 4 351 #define PAPI_VENDOR_SUN 5 352 #define PAPI_VENDOR_FREESCALE 6 353 #define PAPI_VENDOR_ARM 7 354 #define PAPI_VENDOR_MIPS 8 361 #define PAPI_GRN_THR 0x1 362 #define PAPI_GRN_MIN PAPI_GRN_THR 363 #define PAPI_GRN_PROC 0x2 364 #define PAPI_GRN_PROCG 0x4 365 #define PAPI_GRN_SYS 0x8 366 #define PAPI_GRN_SYS_CPU 0x10 367 #define PAPI_GRN_MAX PAPI_GRN_SYS_CPU 373 #define PAPI_STOPPED 0x01 374 #define PAPI_RUNNING 0x02 375 #define PAPI_PAUSED 0x04 376 #define PAPI_NOT_INIT 0x08 377 #define PAPI_OVERFLOWING 0x10 378 #define PAPI_PROFILING 0x20 379 #define PAPI_MULTIPLEXING 0x40 380 #define PAPI_ATTACHED 0x80 381 #define PAPI_CPU_ATTACHED 0x100 388 #define PAPI_VERB_ECONT 1 389 #define PAPI_VERB_ESTOP 2 395 #define PAPI_PROFIL_POSIX 0x0 396 #define PAPI_PROFIL_RANDOM 0x1 397 #define PAPI_PROFIL_WEIGHTED 0x2 398 #define PAPI_PROFIL_COMPRESS 0x4 399 #define PAPI_PROFIL_BUCKET_16 0x8 400 #define PAPI_PROFIL_BUCKET_32 0x10 401 #define PAPI_PROFIL_BUCKET_64 0x20 402 #define PAPI_PROFIL_FORCE_SW 0x40 403 #define PAPI_PROFIL_DATA_EAR 0x80 404 #define PAPI_PROFIL_INST_EAR 0x100 405 #define PAPI_PROFIL_BUCKETS (PAPI_PROFIL_BUCKET_16 | PAPI_PROFIL_BUCKET_32 | PAPI_PROFIL_BUCKET_64) 410 #define PAPI_OVERFLOW_FORCE_SW 0x40 411 #define PAPI_OVERFLOW_HARDWARE 0x80 417 #define PAPI_MULTIPLEX_DEFAULT 0x0 418 #define PAPI_MULTIPLEX_FORCE_SW 0x1 424 #define PAPI_INHERIT_ALL 1 425 #define PAPI_INHERIT_NONE 0 428 #define PAPI_DETACH 1 430 #define PAPI_MULTIPLEX 3 431 #define PAPI_DEFDOM 4 432 #define PAPI_DOMAIN 5 433 #define PAPI_DEFGRN 6 434 #define PAPI_GRANUL 7 435 #define PAPI_DEF_MPX_NS 8 436 //#define PAPI_EDGE_DETECT 9 437 //#define PAPI_INVERT 10 438 #define PAPI_MAX_MPX_CTRS 11 439 #define PAPI_PROFIL 12 440 #define PAPI_PRELOAD 13 441 #define PAPI_CLOCKRATE 14 442 #define PAPI_MAX_HWCTRS 15 443 #define PAPI_HWINFO 16 444 #define PAPI_EXEINFO 17 445 #define PAPI_MAX_CPUS 18 446 #define PAPI_ATTACH 19 447 #define PAPI_SHLIBINFO 20 448 #define PAPI_LIB_VERSION 21 449 #define PAPI_COMPONENTINFO 22 451 #define PAPI_DATA_ADDRESS 23 452 #define PAPI_INSTR_ADDRESS 24 453 #define PAPI_DEF_ITIMER 25 454 #define PAPI_DEF_ITIMER_NS 26 456 #define PAPI_CPU_ATTACH 27 457 #define PAPI_INHERIT 28 458 #define PAPI_USER_EVENTS_FILE 29 460 #define PAPI_INIT_SLOTS 64 463 #define PAPI_MIN_STR_LEN 64 464 #define PAPI_MAX_STR_LEN 128 465 #define PAPI_2MAX_STR_LEN 256 466 #define PAPI_HUGE_STR_LEN 1024 468 #define PAPI_PMU_MAX 40 469 #define PAPI_DERIVED 0x1 509 #define PAPI_ENUM_ALL PAPI_ENUM_EVENTS 511 #define PAPI_PRESET_BIT_MSC (1 << PAPI_PRESET_ENUM_MSC) 512 #define PAPI_PRESET_BIT_INS (1 << PAPI_PRESET_ENUM_INS) 513 #define PAPI_PRESET_BIT_IDL (1 << PAPI_PRESET_ENUM_IDL) 514 #define PAPI_PRESET_BIT_BR (1 << PAPI_PRESET_ENUM_BR) 515 #define PAPI_PRESET_BIT_CND (1 << PAPI_PRESET_ENUM_CND) 516 #define PAPI_PRESET_BIT_MEM (1 << PAPI_PRESET_ENUM_MEM) 517 #define PAPI_PRESET_BIT_CACH (1 << PAPI_PRESET_ENUM_CACH) 518 #define PAPI_PRESET_BIT_L1 (1 << PAPI_PRESET_ENUM_L1) 519 #define PAPI_PRESET_BIT_L2 (1 << PAPI_PRESET_ENUM_L2) 520 #define PAPI_PRESET_BIT_L3 (1 << PAPI_PRESET_ENUM_L3) 521 #define PAPI_PRESET_BIT_TLB (1 << PAPI_PRESET_ENUM_TLB) 522 #define PAPI_PRESET_BIT_FP (1 << PAPI_PRESET_ENUM_FP) 524 #define PAPI_NTV_GROUP_AND_MASK 0x00FF0000 525 #define PAPI_NTV_GROUP_SHIFT 16 551 #define long_long long long 552 #define u_long_long unsigned long long 559 typedef struct _papi_all_thr_spec {
566 long long overflow_vector,
void *context);
571 #ifdef __STDC_VERSION__ 572 #if (__STDC_VERSION__ >= 199901L) 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 {
640 int num_preset_events;
643 int available_domains;
644 int default_granularity;
645 int available_granularities;
646 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;
658 unsigned int fast_counter_read:1;
659 unsigned int fast_real_timer:1;
660 unsigned int fast_virtual_timer:1;
662 unsigned int attach_must_ptrace:1;
667 unsigned int cntr_umasks:1;
674 unsigned int reserved_bits:12;
678 typedef struct _papi_mpx_info {
687 typedef struct _papi_debug_option {
694 typedef struct _papi_address_map {
706 typedef struct _papi_program_info {
712 typedef struct _papi_shared_lib_info {
728 #define PAPI_MH_TYPE_EMPTY 0x0 729 #define PAPI_MH_TYPE_INST 0x1 730 #define PAPI_MH_TYPE_DATA 0x2 731 #define PAPI_MH_TYPE_VECTOR 0x4 732 #define PAPI_MH_TYPE_TRACE 0x8 733 #define PAPI_MH_TYPE_UNIFIED (PAPI_MH_TYPE_INST|PAPI_MH_TYPE_DATA) 734 #define PAPI_MH_CACHE_TYPE(a) (a & 0xf) 735 #define PAPI_MH_TYPE_WT 0x00 736 #define PAPI_MH_TYPE_WB 0x10 737 #define PAPI_MH_CACHE_WRITE_POLICY(a) (a & 0xf0) 738 #define PAPI_MH_TYPE_UNKNOWN 0x000 739 #define PAPI_MH_TYPE_LRU 0x100 740 #define PAPI_MH_TYPE_PSEUDO_LRU 0x200 741 #define PAPI_MH_CACHE_REPLACEMENT_POLICY(a) (a & 0xf00) 742 #define PAPI_MH_TYPE_TLB 0x1000 743 #define PAPI_MH_TYPE_PREF 0x2000 744 #define PAPI_MH_MAX_LEVELS 6 745 #define PAPI_MAX_MEM_HIERARCHY_LEVELS 4 748 typedef struct _papi_mh_tlb_info {
756 typedef struct _papi_mh_cache_info {
765 typedef struct _papi_mh_level_info {
772 typedef struct _papi_mh_info {
779 typedef struct _papi_hw_info {
815 typedef struct _papi_attach_option {
821 typedef struct _papi_cpu_option {
823 unsigned int cpu_num;
827 typedef struct _papi_multiplex_option {
835 typedef struct _papi_addr_range_option {
870 typedef struct _dmem_t {
874 long long high_water_mark;
887 #define PAPIF_DMEM_VMPEAK 1 888 #define PAPIF_DMEM_VMSIZE 2 889 #define PAPIF_DMEM_RESIDENT 3 890 #define PAPIF_DMEM_HIGH_WATER 4 891 #define PAPIF_DMEM_SHARED 5 892 #define PAPIF_DMEM_TEXT 6 893 #define PAPIF_DMEM_LIBRARY 7 894 #define PAPIF_DMEM_HEAP 8 895 #define PAPIF_DMEM_LOCKED 9 896 #define PAPIF_DMEM_STACK 10 897 #define PAPIF_DMEM_PAGESIZE 11 898 #define PAPIF_DMEM_PTE 12 899 #define PAPIF_DMEM_MAXVAL 12 901 #define PAPI_MAX_INFO_TERMS 12 963 unsigned int event_code;
991 unsigned int event_type;
1068 unsigned scale,
int EventSet,
int EventCode,
1122 int PAPI_flips(
float *rtime,
float *ptime,
long long * flpins,
float *mflips);
1123 int PAPI_flops(
float *rtime,
float *ptime,
long long * flpops,
float *mflops);
1124 int PAPI_ipc(
float *rtime,
float *ptime,
long long * ins,
float *ipc);
1125 int PAPI_epc(
int event,
float *rtime,
float *ptime,
long long *ref,
long long *core,
long long *evt,
float *epc);
1132 #define PAPI_COMPONENT_INDEX(a) PAPI_get_event_component(a) 1133 #define PAPI_descr_error(a) PAPI_strerror(a) 1139 #pragma GCC visibility pop
int PAPI_stop(int EventSet, long long *values)
int PAPI_is_initialized(void)
const PAPI_component_info_t * PAPI_get_component_info(int cidx)
int PAPI_add_event(int EventSet, int Event)
long long PAPI_get_virt_usec(void)
int PAPI_set_cmp_granularity(int granularity, int cidx)
int PAPI_reset(int EventSet)
const PAPI_shlib_info_t * PAPI_get_shared_lib_info(void)
int PAPI_disable_component_by_name(const char *name)
static int Events[NUM_EVENTS]
unsigned long PAPI_thread_id(void)
int PAPI_write(int EventSet, long long *values)
int PAPI_ipc(float *rtime, float *ptime, long long *ins, float *ipc)
int PAPI_remove_event(int EventSet, int EventCode)
long long PAPI_get_virt_cyc(void)
int PAPI_flops(float *rtime, float *ptime, long long *flpops, float *mflops)
int PAPI_accum_counters(long long *values, int array_len)
int PAPI_num_components(void)
static double array[ARRAYSIZE]
int PAPI_enum_event(int *EventCode, int modifier)
int PAPI_thread_init(unsigned long(*id_fn)(void))
int PAPI_detach(int EventSet)
get the executable's info
int PAPI_register_thread(void)
int PAPI_event_name_to_code(const char *in, int *out)
int PAPI_overflow(int EventSet, int EventCode, int threshold, int flags, PAPI_overflow_handler_t handler)
A pointer to the following is passed to PAPI_set/get_opt()
static struct timeval start
char units[MAX_EVENTS][BUFSIZ]
int PAPI_remove_events(int EventSet, int *Events, int number)
long long PAPI_get_virt_nsec(void)
int PAPI_sprofil(PAPI_sprofil_t *prof, int profcnt, int EventSet, int EventCode, int threshold, int flags)
int PAPI_set_opt(int option, PAPI_option_t *ptr)
int PAPI_add_events(int EventSet, int *Events, int number)
#define PAPI_HUGE_STR_LEN
int PAPI_get_event_info(int EventCode, PAPI_event_info_t *info)
int PAPI_add_named_event(int EventSet, const char *EventName)
char events[MAX_EVENTS][BUFSIZ]
int PAPI_set_cmp_domain(int domain, int cidx)
int PAPI_disable_component(int cidx)
int PAPI_flips(float *rtime, float *ptime, long long *flpins, float *mflips)
int PAPI_epc(int event, float *rtime, float *ptime, long long *ref, long long *core, long long *evt, float *epc)
int PAPI_num_cmp_hwctrs(int cidx)
#define PAPI_2MAX_STR_LEN
int PAPI_get_thr_specific(int tag, void **ptr)
int PAPI_accum(int EventSet, long long *values)
static struct counter_info * event_info
#define PAPI_MH_MAX_LEVELS
int PAPI_library_init(int version)
int PAPI_profil(void *buf, unsigned bufsiz, caddr_t offset, unsigned scale, int EventSet, int EventCode, int threshold, int flags)
int PAPI_stop_counters(long long *values, int array_len)
A pointer to the following is passed to PAPI_get_dmem_info()
int PAPI_get_cmp_opt(int option, PAPI_option_t *ptr, int cidx)
const PAPI_exe_info_t * PAPI_get_executable_info(void)
int PAPI_num_events(int EventSet)
int PAPI_get_opt(int option, PAPI_option_t *ptr)
int PAPI_get_component_index(const char *name)
int PAPI_state(int EventSet, int *status)
int PAPI_query_named_event(const char *EventName)
get the executable's address space info
static int Event[MAX_EVENTS]
int PAPI_set_granularity(int granularity)
address range specification for range restricted counting if both are zero, range is disabled
int PAPI_enum_cmp_event(int *EventCode, int modifier, int cidx)
mh for mem hierarchy maybe?
void handler(int EventSet, void *address, long long overflow_vector, void *context)
int PAPI_cleanup_eventset(int EventSet)
int PAPI_assign_eventset_component(int EventSet, int cidx)
int PAPI_create_eventset(int *EventSet)
int PAPI_event_code_to_name(int EventCode, char *out)
int PAPI_num_hwctrs(void)
#define PAPI_MAX_INFO_TERMS
int PAPI_get_dmem_info(PAPI_dmem_info_t *dest)
int PAPI_query_event(int EventCode)
int PAPI_get_overflow_event_index(int Eventset, long long overflow_vector, int *array, int *number)
int(* PAPI_debug_handler_t)(int code)
int PAPI_multiplex_init(void)
int PAPI_read_ts(int EventSet, long long *values, long long *cyc)
long long PAPI_get_real_usec(void)
int PAPI_unregister_thread(void)
int PAPI_set_thr_specific(int tag, void *ptr)
char * PAPI_strerror(int)
static char stack[2 *PAPI_HUGE_STR_LEN]
int PAPI_read_counters(long long *values, int array_len)
long long PAPI_get_real_nsec(void)
int PAPI_num_counters(void)
int PAPI_start_counters(int *events, int array_len)
int data_type[MAX_EVENTS]
int PAPI_set_multiplex(int EventSet)
unsigned long PAPI_thread_id_t
int PAPI_destroy_eventset(int *EventSet)
int PAPI_remove_named_event(int EventSet, const char *EventName)
int PAPI_set_domain(int domain)
int PAPI_attach(int EventSet, unsigned long tid)
static int attach(hwd_control_state_t *ctl, unsigned long tid)
long long PAPI_get_real_cyc(void)
int PAPI_read(int EventSet, long long *values)
int PAPI_start(int EventSet)
void PAPI_perror(const char *msg)
int PAPI_get_multiplex(int EventSet)
const PAPI_hw_info_t * PAPI_get_hardware_info(void)
static long long values[NUM_EVENTS]
static const PAPI_hw_info_t * hw_info
volatile int buf[CACHE_FLUSH_BUFFER_SIZE_INTS]
int PAPI_list_threads(unsigned long *tids, int *number)
int PAPI_get_event_component(int EventCode)
char * PAPI_user_defined_events_file_t
int PAPI_set_debug(int level)
void(* PAPI_overflow_handler_t)(int EventSet, void *address, long long overflow_vector, void *context)
#define PAPI_MAX_MEM_HIERARCHY_LEVELS
int PAPI_list_events(int EventSet, int *Events, int *number)
int PAPI_get_eventset_component(int EventSet)