#include #include #include #include "papi.h" char *get_offcore_event(char *event, int size) { const PAPI_hw_info_t *hwinfo; hwinfo = PAPI_get_hardware_info(); if ( hwinfo == NULL ) { return NULL; } if (hwinfo->vendor == PAPI_VENDOR_INTEL) { if ( hwinfo->cpuid_family == 6) { switch(hwinfo->cpuid_model) { case 26: case 30: case 31: /* Nehalem */ case 46: /* Nehalem EX */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:LOCAL_DRAM",size); return event; break; case 37: case 44: /* Westmere */ case 47: /* Westmere EX */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:LOCAL_DRAM",size); return event; break; case 45: /* SandyBridge EP */ case 42: /* SandyBridge */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:ANY_RESPONSE",size); return event; break; case 58: /* IvyBridge */ case 62: /* Ivy Trail */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:ANY_RESPONSE",size); return event; break; case 60: /* Haswell */ case 69: case 70: case 63: /* Haswell EP */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:ANY_RESPONSE",size); return event; break; case 61: /* Broadwell */ case 71: case 86: case 79: /* Broadwell EP */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:ANY_RESPONSE",size); return event; break; case 78: /* Skylake */ case 94: case 85: /* Skylake-X */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:ANY_RESPONSE",size); return event; break; case 142: /* Kabylake */ case 158: strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:ANY_RESPONSE",size); return event; break; case 87: /* Knights Landing */ strncpy(event, "OFFCORE_RESPONSE_0:DMND_DATA_RD:ANY_RESPONSE",size); return event; break; } } return NULL; } else if (hwinfo->vendor == PAPI_VENDOR_AMD) { return NULL; } return NULL; } char *get_instructions_event(char *event, int size) { const PAPI_hw_info_t *hwinfo; hwinfo = PAPI_get_hardware_info(); if ( hwinfo == NULL ) { return NULL; } if (hwinfo->vendor == PAPI_VENDOR_INTEL) { if ( hwinfo->cpuid_family == 6) { strncpy(event,"INSTRUCTIONS_RETIRED",size); return event; } if ( hwinfo->cpuid_family == 15) { strncpy(event,"INSTR_RETIRED:NBOGUSNTAG",size); return event; } return NULL; } else if (hwinfo->vendor == PAPI_VENDOR_AMD) { strncpy(event,"RETIRED_INSTRUCTIONS",size); return event; } return NULL; } char *get_invalid_event_name(char *event, int size) { const PAPI_hw_info_t *hwinfo; hwinfo = PAPI_get_hardware_info(); if ( hwinfo == NULL ) { return NULL; } if (hwinfo->vendor == PAPI_VENDOR_INTEL) { if ( hwinfo->cpuid_family == 6) { switch(hwinfo->cpuid_model) { case 78: /* Skylake */ case 94: case 85: /* Skylake-X */ strncpy(event, "DTLB_LOAD_MISSES:MISS_CAUSES_A_WALK,DTLB_STORE_MISSES:MISS_CAUSES_A_WALK:u=1",size); return event; break; } } return NULL; } else if (hwinfo->vendor == PAPI_VENDOR_AMD) { return NULL; } return NULL; }