PAPI_num_counters() shows the system doesn't have available counters

0

I have a question regarding PAPI (Performance Application Programming Interface). I downloaded and installed PAPI library. Still not sure how to use it correctly and what additional things I need, to make it work. I am trying to use it in C. I have this simple program:

 int retval;

  retval = PAPI_library_init(PAPI_VER_CURRENT);


  if (retval != PAPI_VER_CURRENT && retval > 0) {
    printf("PAPI error: 1\n");
    exit(1); 
}

  if (retval < 0)
    printf("PAPI error: 2\n");


  retval = PAPI_is_initialized();


  if (retval != PAPI_LOW_LEVEL_INITED)
    printf("PAPI error: 2\n");


  int num_hwcntrs = 0;

  if ((num_hwcntrs = PAPI_num_counters()) <= PAPI_OK)
     printf("This system has %d available counters. \n", num_hwcntrs);

I have included papi.h library and I am compiling with gcc -lpapi flag. I added library in path so it is able to compile and run, but as a result I get this:

This system has 0 available counters.

Thought initialization seems to work as it doesn't give error code. Any advice or suggestion would be helpful to determine what I have not done right or missed to run it correctly. I mean, I should have available counters in my system, more precisely I need cache miss and cache hit counters.

I tried to count available counters after I run this another simple program and it gave error code -25:

int numEvents = 2;
  long long values[2];
  int events[2] = {PAPI_L3_TCA,PAPI_L3_TCM};

  printf("PAPI error: %d\n", PAPI_start_counters(events, numEvents));

UPDATE: I just tried to check from terminal hardware information with command: papi_avail | more; and I got this:

Available PAPI preset and user defined events plus hardware information.


PAPI version : 5.7.0.0

Operating system : Linux 4.15.0-45-generic

Vendor string and code : GenuineIntel (1, 0x1)

Model string and code : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz (78, 0x4e)

CPU revision : 3.000000

CPUID : Family/Model/Stepping 6/78/3, 0x06/0x4e/0x03

CPU Max MHz : 2800

CPU Min MHz : 400

Total cores : 4

SMT threads per core : 2

Cores per socket : 2

Sockets : 1

Cores per NUMA region : 4

NUMA regions : 1

Running in a VM : no

Number Hardware Counters : 0

Max Multiplex Counters : 384

Fast counter read (rdpmc): no

PAPI Preset Events

Name        Code    Avail Deriv Description (Note)

PAPI_L1_DCM 0x80000000 No No Level 1 data cache misses

PAPI_L1_ICM 0x80000001 No No Level 1 instruction cache misses

PAPI_L2_DCM 0x80000002 No No Level 2 data cache misses

PAPI_L2_ICM 0x80000003 No No Level 2 instruction cache misses .......

So because Number Hardware Counters is 0, I can't use this tool to count cache misses with PAPI's preset events? Is there any configuration that can be useful or should I forget about it till I change my laptop?

c
caching
x86
papi
asked on Stack Overflow Feb 8, 2019 by Ana Khorguani • edited Feb 8, 2019 by Ana Khorguani

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0