4 int err, EventSet = PAPI_NULL; \
5 int papi_events[2] = {PAPI_L1_DCM, PAPI_L2_TCM}; \
6 long long CtrValues[4]; \
8 /* --- SETUP --- Configure PAPI events ------------------ */ \
9 printf("Initializing PAPI Hardware Performance Counters:\n"); \
10 err = PAPI_library_init(PAPI_VER_CURRENT); \
11 if (err != PAPI_VER_CURRENT) { \
12 fprintf(stderr, "Error initializing PAPI: Version mismatch. Expected %d, got %d\n", PAPI_VER_CURRENT, err); \
13 perror("System error (mostly a perfctr device permission problem)\n"); \
17 /* Create Event Set */ \
18 if (PAPI_create_eventset(&EventSet) != PAPI_OK) { \
19 printf("Failed to create PAPI Event Set\n"); \
23 /* Add Total Instructions Executed to our EventSet */ \
24 if (PAPI_query_event(PAPI_L1_DCM) == PAPI_OK) { \
25 printf(" * PAPI will count L1 misses\n"); \
26 err = PAPI_add_event(EventSet, papi_events[0]); \
28 if (err != PAPI_OK) { \
29 printf("Failed to add PAPI event\n"); \
32 if (PAPI_query_event(PAPI_L2_TCM) == PAPI_OK) { \
33 printf(" * PAPI will count L2 misses\n"); \
34 err = PAPI_add_event(EventSet, papi_events[1]); \
36 if (err != PAPI_OK) { \
37 printf("Failed to add PAPI event\n"); \
43 PAPI_stop(EventSet, &CtrValues[0]); \
44 printf("L1 D cache misses: %ld\n", CtrValues[0]); \
45 printf("L2 (total) cache misses: %ld\n", CtrValues[1]);