papi/papi-power8.patch

181 lines
6.5 KiB
Diff

commit c0c4caf4c1095fc6428d6773eea1f24ec496384a
Author: Maynard Johnson <maynardj@us.ibm.com>
Date: Tue Jul 23 15:44:52 2013 -0500
Add initial support for IBM POWER8 processor
Add initial support for IBM POWER8 processor
The IBM POWER8 processor (to be publicly announced at some
future date) has some preliminary support in libpfm with
a subset of native events. These POWER8-related libpfm
changes were pulled into PAPI on July 3, so further updates
in PAPI were required to support this new processor. This
patch adds that required support. NOTE: Due to the fact
that only a subset of native events have been publicised
at this point (and pushed into libpfm), not all of the
usual PAPI preset events have corresponding native events.
The rest of the POWER8 native events will be pushed
upstream once they are verified, and then we can flesh out
the PAPI preset events.
With this initial POWER8 support patch, 5 of the ctests
and ftests fail, compared to 3 when PAPI is run on a POWER7.
At least one of the failing testcases is due to testing
being done on an early POWER8 processor with some known
hardware problems. We presume the number of failing tests
will decrease once we have GA-level hardware to test on.
Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
diff --git a/src/linux-memory.c b/src/linux-memory.c
index 4a30da9..6c69fbd 100644
--- a/src/linux-memory.c
+++ b/src/linux-memory.c
@@ -486,7 +486,7 @@ PAPI_mh_info_t sys_mem_info[4] = {
,
.cache = {
[0] = { .type = PAPI_MH_TYPE_UNIFIED | PAPI_MH_TYPE_PSEUDO_LRU,
- .size = 262144, .line_size = 128, .num_lines = 256,
+ .size = 524288, .line_size = 128, .num_lines = 256,
.associativity = 8 }
,
[1] = { .type = PAPI_MH_TYPE_EMPTY, .size = -1, .line_size = -1,
@@ -514,7 +514,74 @@ PAPI_mh_info_t sys_mem_info[4] = {
}
,
}
- } // POWER7 end
+ }, // POWER7 end
+ {3,
+ {
+ [0] = { // level 1 begins
+ .tlb = {
+ /// POWER8 has an ERAT (Effective to Real Address
+ /// Translation) instead of a TLB. For the purposes of this
+ /// data, we will treat it like a TLB.
+ [0] = { .type = PAPI_MH_TYPE_INST,
+ .num_entries = 72, .page_size = 0,
+ .associativity = SHRT_MAX }
+ ,
+ [1] = { .type = PAPI_MH_TYPE_DATA,
+ .num_entries = 48, .page_size = 0,
+ .associativity = SHRT_MAX }
+ }
+ ,
+ .cache = { // level 1 caches begin
+ [0] = { .type = PAPI_MH_TYPE_INST | PAPI_MH_TYPE_PSEUDO_LRU,
+ .size = 32768, .line_size = 128, .num_lines = 64,
+ .associativity = 8 }
+ ,
+ [1] = { .type = PAPI_MH_TYPE_DATA | PAPI_MH_TYPE_WT | PAPI_MH_TYPE_LRU,
+ .size = 65536, .line_size = 128, .num_lines = 512,
+ .associativity = 8 }
+ }
+ }
+ ,
+ [1] = { // level 2 begins
+ .tlb = {
+ [0] = { .type = PAPI_MH_TYPE_UNIFIED, .num_entries = 2048,
+ .page_size = 0, .associativity = 4 }
+ ,
+ [1] = { .type = PAPI_MH_TYPE_EMPTY, .num_entries = -1,
+ .page_size = -1, .associativity = -1 }
+ }
+ ,
+ .cache = {
+ [0] = { .type = PAPI_MH_TYPE_UNIFIED | PAPI_MH_TYPE_PSEUDO_LRU,
+ .size = 262144, .line_size = 128, .num_lines = 256,
+ .associativity = 8 }
+ ,
+ [1] = { .type = PAPI_MH_TYPE_EMPTY, .size = -1, .line_size = -1,
+ .num_lines = -1, .associativity = -1 }
+ }
+ }
+ ,
+ [2] = { // level 3 begins
+ .tlb = {
+ [0] = { .type = PAPI_MH_TYPE_EMPTY, .num_entries = -1,
+ .page_size = -1, .associativity = -1 }
+ ,
+ [1] = { .type = PAPI_MH_TYPE_EMPTY, .num_entries = -1,
+ .page_size = -1, .associativity = -1 }
+ }
+ ,
+ .cache = {
+ [0] = { .type = PAPI_MH_TYPE_UNIFIED | PAPI_MH_TYPE_PSEUDO_LRU,
+ .size = 8388608, .line_size = 128, .num_lines = 65536,
+ .associativity = 8 }
+ ,
+ [1] = { .type = PAPI_MH_TYPE_EMPTY, .size = -1, .line_size = -1,
+ .num_lines = -1, .associativity = -1 }
+ }
+ }
+ ,
+ }
+ } // POWER8 end
};
#define SPRN_PVR 0x11F /* Processor Version Register */
@@ -552,6 +619,9 @@ ppc64_get_memory_info( PAPI_hw_info_t * hw_info )
case 0x3F: /* POWER7 */
index = 3;
break;
+ case 0x4b: /*POWER8*/
+ index = 4;
+ break;
default:
index = -1;
break;
diff --git a/src/papi_events.csv b/src/papi_events.csv
index 58d3e68..2e0da80 100644
--- a/src/papi_events.csv
+++ b/src/papi_events.csv
@@ -1241,6 +1241,46 @@ PRESET,PAPI_BR_MSP,NOT_DERIVED,PM_BR_MPRED
PRESET,PAPI_BR_PRC,NOT_DERIVED,PM_BR_PRED
PRESET,PAPI_FXU_IDL,NOT_DERIVED,PM_FXU_IDLE
#
+CPU,POWER8
+CPU,power8
+#
+PRESET,PAPI_L1_DCM,DERIVED_ADD,PM_LD_MISS_L1,PM_ST_MISS_L1
+PRESET,PAPI_L1_LDM,NOT_DERIVED,PM_LD_MISS_L1
+PRESET,PAPI_L1_STM,NOT_DERIVED,PM_ST_MISS_L1
+PRESET,PAPI_L1_DCW,DERIVED_POSTFIX,N0|N1|-|,PM_ST_FIN,PM_ST_MISS_L1
+#n/aPRESET,PAPI_L1_DCA,DERIVED_POSTFIX,N0|N1|-|N2|+|,PM_ST_FIN,PM_ST_MISS_L1,PM_LD_REF_L1
+#n/aPRESET,PAPI_L1_DCR,DERIVED_ADD,PM_LD_REF_L1_LSU0,PM_LD_REF_L1_LSU1
+PRESET,PAPI_L2_DCM,NOT_DERIVED,PM_DATA_FROM_L2MISS
+#n/aPRESET,PAPI_L2_LDM,NOT_DERIVED,PM_L2_LD_MISS
+#n/aPRESET,PAPI_L2_STM,NOT_DERIVED,PM_L2_ST_MISS
+PRESET,PAPI_L3_DCR,NOT_DERIVED,PM_DATA_FROM_L2MISS
+#n/aPRESET,PAPI_L3_DCM,DERIVED_ADD,PM_DATA_FROM_LMEM,PM_DATA_FROM_RMEM
+#n/aPRESET,PAPI_L3_LDM,DERIVED_ADD,PM_DATA_FROM_LMEM,PM_DATA_FROM_RMEM
+#n/aPRESET,PAPI_L1_ICH,NOT_DERIVED,PM_INST_FROM_L1
+PRESET,PAPI_L1_ICM,NOT_DERIVED,PM_L1_ICACHE_MISS
+#n/aPRESET,PAPI_L2_ICM,NOT_DERIVED,PM_L2_INST_MISS
+#n/aPRESET,PAPI_L2_ICH,NOT_DERIVED,PM_INST_FROM_L2
+#n/aPRESET,PAPI_L3_ICA,NOT_DERIVED,PM_INST_FROM_L2MISS
+#n/aPRESET,PAPI_L3_ICH,NOT_DERIVED,PM_INST_FROM_L3
+PRESET,PAPI_L3_ICM,NOT_DERIVED,PM_INST_FROM_L3MISS
+#n/aPRESET,PAPI_FMA_INS,NOT_DERIVED,PM_VSU_FMA
+PRESET,PAPI_TOT_IIS,NOT_DERIVED,PM_INST_DISP
+PRESET,PAPI_TOT_INS,NOT_DERIVED,PM_INST_CMPL
+#n/aPRESET,PAPI_INT_INS,DERIVED_ADD,PM_FXU0_FIN,PM_FXU1_FIN
+PRESET,PAPI_FP_OPS,NOT_DERIVED,PM_FLOP
+PRESET,PAPI_FP_INS,NOT_DERIVED,PM_FLOP
+PRESET,PAPI_TOT_CYC,NOT_DERIVED,PM_RUN_CYC
+PRESET,PAPI_HW_INT,NOT_DERIVED,PM_EXT_INT
+PRESET,PAPI_STL_ICY,DERIVED_POSTFIX,N0|N1|-|,PM_RUN_CYC,PM_1PLUS_PPC_DISP
+PRESET,PAPI_SR_INS,NOT_DERIVED,PM_ST_FIN
+#n/aPRESET,PAPI_LD_INS,DERIVED_ADD,PM_LD_REF_L1,PM_LD_MISS_L1
+#/naPRESET,PAPI_LST_INS,NOT_DERIVED,PM_LSU_FIN
+#PRESET,PAPI_LST_INS,DERIVED_ADD,PM_LD_REF_L1,PM_LD_MISS_L1,PM_ST_FIN
+#n/aPRESET,PAPI_BR_INS,NOT_DERIVED,PM_BRU_FIN
+#n/aPRESET,PAPI_BR_MSP,NOT_DERIVED,PM_BR_MPRED
+#n/aPRESET,PAPI_BR_PRC,NOT_DERIVED,PM_BR_PRED
+#n/aPRESET,PAPI_FXU_IDL,NOT_DERIVED,PM_FXU_IDLE
+#
CPU,ultra12
#
PRESET,PAPI_TOT_CYC,NOT_DERIVED,CYCLE_CNT