Thank for the answer danterpstra.
I looked in my machine and in my case only L2_DCM is derived:
- Code: Select all
mpedrero@huracan:~$ papi_avail | grep L2_DC*
PAPI_L2_DCM 0x80000002 Yes Yes Level 2 data cache misses
PAPI_L2_DCH 0x8000003f Yes Yes Level 2 data cache hits
PAPI_L2_DCA 0x80000041 Yes No Level 2 data cache accesses
PAPI_L2_DCR 0x80000044 Yes No Level 2 data cache reads
PAPI_L2_DCW 0x80000047 Yes No Level 2 data cache writes
mpedrero@huracan:~$
And it seems that my processor has 16 counters:
- Code: Select all
mpedrero@huracan:~$ papi_avail
Available events and hardware information.
--------------------------------------------------------------------------------
PAPI Version : 4.1.3.0
Vendor string and code : GenuineIntel (1)
Model string and code : Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (30)
CPU Revision : 5.000000
CPUID Info : Family: 6 Model: 30 Stepping: 5
CPU Megahertz : 2808.604004
CPU Clock Megahertz : 2808
Hdw Threads per core : 1
Cores per Socket : 4
NUMA Nodes : 1
CPU's per Node : 4
Total CPU's : 4
Number Hardware Counters : 16
Max Multiplex Counters : 512
--------------------------------------------------------------------------------
According to papi_avail -e I only need 3 of them:
- Code: Select all
Event name: PAPI_L2_DCA
Event Code: 0x80000041
Number of Native Events: 1
Short Description: |L2D cache accesses|
Long Description: |Level 2 data cache accesses|
Developer's Notes: ||
Derived Type: |NOT_DERIVED|
Postfix Processing String: ||
Native Code[0]: 0x40002028 |L1D:REPL|
Number of Register Values: 3
Register[ 0]: 0x00000051 |Event Code|
Register[ 1]: 0x00000051 |Event Code|
Register[ 2]: 0x00000001 |Unit Mask|
Native Event Description: |L1D cache, masks:L1 data cache lines allocated|
- Code: Select all
The following correspond to fields in the PAPI_event_info_t structure.
Event name: PAPI_L2_DCM
Event Code: 0x80000002
Number of Native Events: 2
Short Description: |L2D cache misses|
Long Description: |Level 2 data cache misses|
Developer's Notes: ||
Derived Type: |DERIVED_ADD|
Postfix Processing String: ||
Native Code[0]: 0x40010037 |L2_RQSTS:LD_MISS|
Number of Register Values: 5
Register[ 0]: 0x00000024 |Event Code|
Register[ 1]: 0x00000024 |Event Code|
Register[ 2]: 0x00000024 |Event Code|
Register[ 3]: 0x00000024 |Event Code|
Register[ 4]: 0x00000002 |Unit Mask|
Native Event Description: |L2 requests, masks:L2 load misses|
Native Code[1]: 0x40400037 |L2_RQSTS:RFO_MISS|
Number of Register Values: 5
Register[ 0]: 0x00000024 |Event Code|
Register[ 1]: 0x00000024 |Event Code|
Register[ 2]: 0x00000024 |Event Code|
Register[ 3]: 0x00000024 |Event Code|
Register[ 4]: 0x00000008 |Unit Mask|
Native Event Description: |L2 requests, masks:L2 RFO misses|
Programmable counters are not the "hardware counters" that shows papi_avail?
I'll try your solution anyway and post the results
Thank you again