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