Merge branch 'dev' of https://github.com/AMDResearch/omniperf into kernel_name_mappings
[ROCm/rocprofiler-compute commit: 76da2a9ed5]
This commit is contained in:
@@ -11,6 +11,7 @@ Panel Config:
|
||||
data source:
|
||||
- metric_table:
|
||||
id: 201
|
||||
title: Speed-of-Light
|
||||
header:
|
||||
metric: Metric
|
||||
value: Value
|
||||
|
||||
+8
-2
@@ -16,6 +16,9 @@ Panel Config:
|
||||
count: Count
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
label_txt: (# of instr + $normUnit)
|
||||
metric:
|
||||
VALU - Vector:
|
||||
count: None # No HW module
|
||||
@@ -27,7 +30,7 @@ Panel Config:
|
||||
tips:
|
||||
LDS:
|
||||
count: AVG((SQ_INSTS_LDS / $denom))
|
||||
unit: $normUnit
|
||||
unit: (instr + $normUnit)
|
||||
tips:
|
||||
VALU - MFMA:
|
||||
count: None # No HW module
|
||||
@@ -58,10 +61,13 @@ Panel Config:
|
||||
count: Count
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
label_txt: (# of instr + $normUnit)
|
||||
metric:
|
||||
INT-32:
|
||||
count: None # No perf counter
|
||||
unit: $normUnit
|
||||
unit: (instr + $normUnit)
|
||||
tips:
|
||||
INT-64:
|
||||
count: None # No perf counter
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
valu_flops_pop:
|
||||
value: None # No perf counter
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Utilization:
|
||||
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Bandwidth:
|
||||
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
mertic: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Bandwidth:
|
||||
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
|
||||
|
||||
+11
-4
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Buffer Coalescing:
|
||||
value: AVG(((((TA_TOTAL_WAVEFRONTS_sum * 64) * 100) / (TCP_TOTAL_ACCESSES_sum
|
||||
@@ -248,6 +253,8 @@ Panel Config:
|
||||
max: Max
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_multi_bar
|
||||
metric:
|
||||
NC - Read:
|
||||
xfer: Read
|
||||
@@ -361,7 +368,7 @@ Panel Config:
|
||||
mean: AVG((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
Hit Ratio:
|
||||
mean: AVG((((100 * TCP_UTCL1_TRANSLATION_HIT_sum) / TCP_UTCL1_REQUEST_sum) if
|
||||
@@ -376,17 +383,17 @@ Panel Config:
|
||||
mean: AVG((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Hits + $normUnit)
|
||||
tips:
|
||||
Misses (Translation):
|
||||
mean: AVG((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Misses + $normUnit)
|
||||
tips:
|
||||
Misses (Permission):
|
||||
mean: AVG((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Misses + $normUnit)
|
||||
tips:
|
||||
|
||||
@@ -16,6 +16,8 @@ Panel Config:
|
||||
value: Value
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
metric:
|
||||
L2 Util:
|
||||
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
|
||||
@@ -301,6 +303,8 @@ Panel Config:
|
||||
max: Max
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_multi_bar
|
||||
metric:
|
||||
Read - Remote Socket Stall:
|
||||
type: Remote Socket Stall
|
||||
|
||||
+7
-7
@@ -204,7 +204,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_REQ[22])) + TO_INT(TCC_REQ[23])) + TO_INT(TCC_REQ[24])) + TO_INT(TCC_REQ[25]))
|
||||
+ TO_INT(TCC_REQ[26])) + TO_INT(TCC_REQ[27])) + TO_INT(TCC_REQ[28])) + TO_INT(TCC_REQ[29]))
|
||||
+ TO_INT(TCC_REQ[30])) + TO_INT(TCC_REQ[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Read Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_READ[0]) + TO_INT(TCC_READ[1]))
|
||||
@@ -247,7 +247,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_READ[24])) + TO_INT(TCC_READ[25])) + TO_INT(TCC_READ[26])) +
|
||||
TO_INT(TCC_READ[27])) + TO_INT(TCC_READ[28])) + TO_INT(TCC_READ[29])) + TO_INT(TCC_READ[30]))
|
||||
+ TO_INT(TCC_READ[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Write Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_WRITE[0]) + TO_INT(TCC_WRITE[1]))
|
||||
@@ -294,7 +294,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_WRITE[24])) + TO_INT(TCC_WRITE[25])) + TO_INT(TCC_WRITE[26]))
|
||||
+ TO_INT(TCC_WRITE[27])) + TO_INT(TCC_WRITE[28])) + TO_INT(TCC_WRITE[29]))
|
||||
+ TO_INT(TCC_WRITE[30])) + TO_INT(TCC_WRITE[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Atomic Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_ATOMIC[0]) + TO_INT(TCC_ATOMIC[1]))
|
||||
@@ -345,7 +345,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_ATOMIC[26])) + TO_INT(TCC_ATOMIC[27])) + TO_INT(TCC_ATOMIC[28]))
|
||||
+ TO_INT(TCC_ATOMIC[29])) + TO_INT(TCC_ATOMIC[30])) + TO_INT(TCC_ATOMIC[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Read Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_RDREQ[0]) + TO_INT(TCC_EA_RDREQ[1]))
|
||||
@@ -396,7 +396,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_RDREQ[26])) + TO_INT(TCC_EA_RDREQ[27])) + TO_INT(TCC_EA_RDREQ[28]))
|
||||
+ TO_INT(TCC_EA_RDREQ[29])) + TO_INT(TCC_EA_RDREQ[30])) + TO_INT(TCC_EA_RDREQ[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Write Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_WRREQ[0]) + TO_INT(TCC_EA_WRREQ[1]))
|
||||
@@ -447,7 +447,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_WRREQ[26])) + TO_INT(TCC_EA_WRREQ[27])) + TO_INT(TCC_EA_WRREQ[28]))
|
||||
+ TO_INT(TCC_EA_WRREQ[29])) + TO_INT(TCC_EA_WRREQ[30])) + TO_INT(TCC_EA_WRREQ[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Atomic Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_ATOMIC[0]) + TO_INT(TCC_EA_ATOMIC[1]))
|
||||
@@ -498,7 +498,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_ATOMIC[26])) + TO_INT(TCC_EA_ATOMIC[27])) + TO_INT(TCC_EA_ATOMIC[28]))
|
||||
+ TO_INT(TCC_EA_ATOMIC[29])) + TO_INT(TCC_EA_ATOMIC[30])) + TO_INT(TCC_EA_ATOMIC[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Read Lat:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TCC_EA_RDREQ_LEVEL[0] + TCC_EA_RDREQ_LEVEL[1])
|
||||
|
||||
@@ -11,6 +11,7 @@ Panel Config:
|
||||
data source:
|
||||
- metric_table:
|
||||
id: 201
|
||||
title: Speed-of-Light
|
||||
header:
|
||||
metric: Metric
|
||||
value: Value
|
||||
|
||||
@@ -16,6 +16,9 @@ Panel Config:
|
||||
count: Count
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
label_txt: (# of instr + $normUnit)
|
||||
metric:
|
||||
VALU - Vector:
|
||||
count: AVG(((SQ_INSTS_VALU - SQ_INSTS_MFMA) / $denom))
|
||||
@@ -58,6 +61,9 @@ Panel Config:
|
||||
count: Count
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
label_txt: (# of instr + $normUnit)
|
||||
metric:
|
||||
INT-32:
|
||||
count: None # No perf counter
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
valu_flops_pop:
|
||||
value: None # No perf counter
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Utilization:
|
||||
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Bandwidth:
|
||||
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
mertic: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Bandwidth:
|
||||
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
|
||||
|
||||
+11
-4
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Buffer Coalescing:
|
||||
value: AVG(((((TA_TOTAL_WAVEFRONTS_sum * 64) * 100) / (TCP_TOTAL_ACCESSES_sum
|
||||
@@ -248,6 +253,8 @@ Panel Config:
|
||||
max: Max
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_multi_bar
|
||||
metric:
|
||||
NC - Read:
|
||||
xfer: Read
|
||||
@@ -361,7 +368,7 @@ Panel Config:
|
||||
mean: AVG((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
Hit Ratio:
|
||||
mean: AVG((((100 * TCP_UTCL1_TRANSLATION_HIT_sum) / TCP_UTCL1_REQUEST_sum) if
|
||||
@@ -376,17 +383,17 @@ Panel Config:
|
||||
mean: AVG((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Hits + $normUnit)
|
||||
tips:
|
||||
Misses (Translation):
|
||||
mean: AVG((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Misses + $normUnit)
|
||||
tips:
|
||||
Misses (Permission):
|
||||
mean: AVG((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Misses + $normUnit)
|
||||
tips:
|
||||
|
||||
@@ -16,6 +16,8 @@ Panel Config:
|
||||
value: Value
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
metric:
|
||||
L2 Util:
|
||||
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
|
||||
@@ -301,6 +303,8 @@ Panel Config:
|
||||
max: Max
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_multi_bar
|
||||
metric:
|
||||
Read - Remote Socket Stall:
|
||||
type: Remote Socket Stall
|
||||
|
||||
+7
-7
@@ -204,7 +204,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_REQ[22])) + TO_INT(TCC_REQ[23])) + TO_INT(TCC_REQ[24])) + TO_INT(TCC_REQ[25]))
|
||||
+ TO_INT(TCC_REQ[26])) + TO_INT(TCC_REQ[27])) + TO_INT(TCC_REQ[28])) + TO_INT(TCC_REQ[29]))
|
||||
+ TO_INT(TCC_REQ[30])) + TO_INT(TCC_REQ[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Read Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_READ[0]) + TO_INT(TCC_READ[1]))
|
||||
@@ -247,7 +247,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_READ[24])) + TO_INT(TCC_READ[25])) + TO_INT(TCC_READ[26])) +
|
||||
TO_INT(TCC_READ[27])) + TO_INT(TCC_READ[28])) + TO_INT(TCC_READ[29])) + TO_INT(TCC_READ[30]))
|
||||
+ TO_INT(TCC_READ[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Write Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_WRITE[0]) + TO_INT(TCC_WRITE[1]))
|
||||
@@ -294,7 +294,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_WRITE[24])) + TO_INT(TCC_WRITE[25])) + TO_INT(TCC_WRITE[26]))
|
||||
+ TO_INT(TCC_WRITE[27])) + TO_INT(TCC_WRITE[28])) + TO_INT(TCC_WRITE[29]))
|
||||
+ TO_INT(TCC_WRITE[30])) + TO_INT(TCC_WRITE[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Atomic Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_ATOMIC[0]) + TO_INT(TCC_ATOMIC[1]))
|
||||
@@ -345,7 +345,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_ATOMIC[26])) + TO_INT(TCC_ATOMIC[27])) + TO_INT(TCC_ATOMIC[28]))
|
||||
+ TO_INT(TCC_ATOMIC[29])) + TO_INT(TCC_ATOMIC[30])) + TO_INT(TCC_ATOMIC[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Read Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_RDREQ[0]) + TO_INT(TCC_EA_RDREQ[1]))
|
||||
@@ -396,7 +396,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_RDREQ[26])) + TO_INT(TCC_EA_RDREQ[27])) + TO_INT(TCC_EA_RDREQ[28]))
|
||||
+ TO_INT(TCC_EA_RDREQ[29])) + TO_INT(TCC_EA_RDREQ[30])) + TO_INT(TCC_EA_RDREQ[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Write Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_WRREQ[0]) + TO_INT(TCC_EA_WRREQ[1]))
|
||||
@@ -447,7 +447,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_WRREQ[26])) + TO_INT(TCC_EA_WRREQ[27])) + TO_INT(TCC_EA_WRREQ[28]))
|
||||
+ TO_INT(TCC_EA_WRREQ[29])) + TO_INT(TCC_EA_WRREQ[30])) + TO_INT(TCC_EA_WRREQ[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Atomic Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_ATOMIC[0]) + TO_INT(TCC_EA_ATOMIC[1]))
|
||||
@@ -498,7 +498,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_ATOMIC[26])) + TO_INT(TCC_EA_ATOMIC[27])) + TO_INT(TCC_EA_ATOMIC[28]))
|
||||
+ TO_INT(TCC_EA_ATOMIC[29])) + TO_INT(TCC_EA_ATOMIC[30])) + TO_INT(TCC_EA_ATOMIC[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Read Lat:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TCC_EA_RDREQ_LEVEL[0] + TCC_EA_RDREQ_LEVEL[1])
|
||||
|
||||
+3
-2
@@ -11,6 +11,7 @@ Panel Config:
|
||||
data source:
|
||||
- metric_table:
|
||||
id: 201
|
||||
title: Speed-of-Light
|
||||
header:
|
||||
metric: Metric
|
||||
value: Value
|
||||
@@ -44,9 +45,9 @@ Panel Config:
|
||||
MFMA FLOPs (BF16):
|
||||
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (EndNs - BeginNs)))
|
||||
unit: GFLOP
|
||||
peak: ((($sclk * $numCU) * 512) / 1000)
|
||||
peak: ((($sclk * $numCU) * 1024) / 1000)
|
||||
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (EndNs - BeginNs))))
|
||||
/ ((($sclk * $numCU) * 512) / 1000))
|
||||
/ ((($sclk * $numCU) * 1024) / 1000))
|
||||
tips:
|
||||
MFMA FLOPs (F16):
|
||||
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (EndNs - BeginNs)))
|
||||
|
||||
@@ -16,6 +16,9 @@ Panel Config:
|
||||
count: Count
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
label_txt: (# of instr + $normUnit)
|
||||
metric:
|
||||
VALU - Vector:
|
||||
count: AVG(((SQ_INSTS_VALU - SQ_INSTS_MFMA) / $denom))
|
||||
@@ -58,6 +61,9 @@ Panel Config:
|
||||
count: Count
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
label_txt: (# of instr + $normUnit)
|
||||
metric:
|
||||
INT32:
|
||||
count: AVG((SQ_INSTS_VALU_INT32 / $denom))
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
valu_flops_pop:
|
||||
value: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Utilization:
|
||||
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Bandwidth:
|
||||
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
|
||||
|
||||
@@ -15,6 +15,11 @@ Panel Config:
|
||||
mertic: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Bandwidth:
|
||||
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
|
||||
|
||||
+11
-4
@@ -15,6 +15,11 @@ Panel Config:
|
||||
metric: Metric
|
||||
value: Value
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
range_color: [1, 100]
|
||||
label_txt: (%)
|
||||
xrange: [0, 110]
|
||||
metric:
|
||||
Buffer Coalescing:
|
||||
value: AVG(((((TA_TOTAL_WAVEFRONTS_sum * 64) * 100) / (TCP_TOTAL_ACCESSES_sum
|
||||
@@ -248,6 +253,8 @@ Panel Config:
|
||||
max: Max
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_multi_bar
|
||||
metric:
|
||||
NC - Read:
|
||||
xfer: Read
|
||||
@@ -361,7 +368,7 @@ Panel Config:
|
||||
mean: AVG((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_REQUEST_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
Hit Ratio:
|
||||
mean: AVG((((100 * TCP_UTCL1_TRANSLATION_HIT_sum) / TCP_UTCL1_REQUEST_sum) if
|
||||
@@ -376,17 +383,17 @@ Panel Config:
|
||||
mean: AVG((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_TRANSLATION_HIT_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Hits + $normUnit)
|
||||
tips:
|
||||
Misses (Translation):
|
||||
mean: AVG((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_TRANSLATION_MISS_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Misses + $normUnit)
|
||||
tips:
|
||||
Misses (Permission):
|
||||
mean: AVG((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
min: MIN((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
max: MAX((TCP_UTCL1_PERMISSION_MISS_sum / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Misses + $normUnit)
|
||||
tips:
|
||||
|
||||
@@ -16,6 +16,8 @@ Panel Config:
|
||||
value: Value
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_bar
|
||||
metric:
|
||||
L2 Util:
|
||||
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
|
||||
@@ -301,6 +303,8 @@ Panel Config:
|
||||
max: Max
|
||||
unit: Unit
|
||||
tips: Tips
|
||||
style:
|
||||
type: simple_multi_bar
|
||||
metric:
|
||||
Read - Remote Socket Stall:
|
||||
type: Remote Socket Stall
|
||||
|
||||
+7
-7
@@ -204,7 +204,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_REQ[22])) + TO_INT(TCC_REQ[23])) + TO_INT(TCC_REQ[24])) + TO_INT(TCC_REQ[25]))
|
||||
+ TO_INT(TCC_REQ[26])) + TO_INT(TCC_REQ[27])) + TO_INT(TCC_REQ[28])) + TO_INT(TCC_REQ[29]))
|
||||
+ TO_INT(TCC_REQ[30])) + TO_INT(TCC_REQ[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Read Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_READ[0]) + TO_INT(TCC_READ[1]))
|
||||
@@ -247,7 +247,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_READ[24])) + TO_INT(TCC_READ[25])) + TO_INT(TCC_READ[26])) +
|
||||
TO_INT(TCC_READ[27])) + TO_INT(TCC_READ[28])) + TO_INT(TCC_READ[29])) + TO_INT(TCC_READ[30]))
|
||||
+ TO_INT(TCC_READ[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Write Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_WRITE[0]) + TO_INT(TCC_WRITE[1]))
|
||||
@@ -294,7 +294,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_WRITE[24])) + TO_INT(TCC_WRITE[25])) + TO_INT(TCC_WRITE[26]))
|
||||
+ TO_INT(TCC_WRITE[27])) + TO_INT(TCC_WRITE[28])) + TO_INT(TCC_WRITE[29]))
|
||||
+ TO_INT(TCC_WRITE[30])) + TO_INT(TCC_WRITE[31])) / 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L1 - L2 Atomic Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_ATOMIC[0]) + TO_INT(TCC_ATOMIC[1]))
|
||||
@@ -345,7 +345,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_ATOMIC[26])) + TO_INT(TCC_ATOMIC[27])) + TO_INT(TCC_ATOMIC[28]))
|
||||
+ TO_INT(TCC_ATOMIC[29])) + TO_INT(TCC_ATOMIC[30])) + TO_INT(TCC_ATOMIC[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Read Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_RDREQ[0]) + TO_INT(TCC_EA_RDREQ[1]))
|
||||
@@ -396,7 +396,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_RDREQ[26])) + TO_INT(TCC_EA_RDREQ[27])) + TO_INT(TCC_EA_RDREQ[28]))
|
||||
+ TO_INT(TCC_EA_RDREQ[29])) + TO_INT(TCC_EA_RDREQ[30])) + TO_INT(TCC_EA_RDREQ[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Write Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_WRREQ[0]) + TO_INT(TCC_EA_WRREQ[1]))
|
||||
@@ -447,7 +447,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_WRREQ[26])) + TO_INT(TCC_EA_WRREQ[27])) + TO_INT(TCC_EA_WRREQ[28]))
|
||||
+ TO_INT(TCC_EA_WRREQ[29])) + TO_INT(TCC_EA_WRREQ[30])) + TO_INT(TCC_EA_WRREQ[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Atomic Req:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TO_INT(TCC_EA_ATOMIC[0]) + TO_INT(TCC_EA_ATOMIC[1]))
|
||||
@@ -498,7 +498,7 @@ Panel Config:
|
||||
+ TO_INT(TCC_EA_ATOMIC[26])) + TO_INT(TCC_EA_ATOMIC[27])) + TO_INT(TCC_EA_ATOMIC[28]))
|
||||
+ TO_INT(TCC_EA_ATOMIC[29])) + TO_INT(TCC_EA_ATOMIC[30])) + TO_INT(TCC_EA_ATOMIC[31]))
|
||||
/ 32) / $denom))
|
||||
units: ( + $normUnit)
|
||||
units: (Req + $normUnit)
|
||||
tips:
|
||||
L2 - EA Read Lat:
|
||||
mean: AVG((((((((((((((((((((((((((((((((((TCC_EA_RDREQ_LEVEL[0] + TCC_EA_RDREQ_LEVEL[1])
|
||||
|
||||
@@ -46,38 +46,45 @@ from pathlib import Path
|
||||
from omniperf_analyze.utils import parser, file_io
|
||||
from omniperf_analyze.utils.gui_components.roofline import get_roofline
|
||||
|
||||
archConfigs = {}
|
||||
|
||||
def initialize_run(args, normalization_filter=None):
|
||||
import pandas as pd
|
||||
from collections import OrderedDict
|
||||
|
||||
################################################
|
||||
# Helper Functions
|
||||
################################################
|
||||
def generate_config(arch, config_dir, list_kernels, filter_metrics):
|
||||
from omniperf_analyze.utils import schema
|
||||
|
||||
single_panel_config = file_io.is_single_panel_config(Path(config_dir))
|
||||
global archConfigs
|
||||
|
||||
ac = schema.ArchConfig()
|
||||
if list_kernels:
|
||||
ac.panel_configs = file_io.top_stats_build_in_config
|
||||
else:
|
||||
arch_panel_config = (
|
||||
config_dir if single_panel_config else config_dir.joinpath(arch)
|
||||
)
|
||||
ac.panel_configs = file_io.load_panel_configs(arch_panel_config)
|
||||
|
||||
# TODO: filter_metrics should/might be one per arch
|
||||
# print(ac)
|
||||
|
||||
parser.build_dfs(ac, filter_metrics)
|
||||
|
||||
archConfigs[arch] = ac
|
||||
|
||||
return archConfigs # Note: This return comes in handy for rocScope which borrows generate_configs() in its rocomni plugin
|
||||
|
||||
|
||||
def list_metrics(args):
|
||||
import pandas as pd
|
||||
from tabulate import tabulate
|
||||
|
||||
# Fixme: cur_root.parent.joinpath('soc_params')
|
||||
soc_params_dir = os.path.join(os.path.dirname(__file__), "..", "soc_params")
|
||||
soc_spec_df = file_io.load_soc_params(soc_params_dir)
|
||||
|
||||
single_panel_config = file_io.is_single_panel_config(Path(args.config_dir))
|
||||
global archConfigs
|
||||
archConfigs = {}
|
||||
for arch in file_io.supported_arch.keys():
|
||||
ac = schema.ArchConfig()
|
||||
if args.list_kernels:
|
||||
ac.panel_configs = file_io.top_stats_build_in_config
|
||||
else:
|
||||
arch_panel_config = (
|
||||
args.config_dir if single_panel_config else args.config_dir.joinpath(arch)
|
||||
)
|
||||
ac.panel_configs = file_io.load_panel_configs(arch_panel_config)
|
||||
|
||||
# TODO: filter_metrics should/might be one per arch
|
||||
# print(ac)
|
||||
|
||||
parser.build_dfs(ac, args.filter_metrics)
|
||||
|
||||
archConfigs[arch] = ac
|
||||
|
||||
if args.list_metrics in file_io.supported_arch.keys():
|
||||
arch = args.list_metrics
|
||||
if arch not in archConfigs.keys():
|
||||
generate_config(arch, args.config_dir, args.list_kernels, args.filter_metrics)
|
||||
print(
|
||||
tabulate(
|
||||
pd.DataFrame.from_dict(
|
||||
@@ -91,7 +98,12 @@ def initialize_run(args, normalization_filter=None):
|
||||
file=output,
|
||||
)
|
||||
sys.exit(0)
|
||||
else:
|
||||
print("Error: Unsupported arch")
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
def load_options(args, normalization_filter):
|
||||
# Use original normalization or user input from GUI
|
||||
if not normalization_filter:
|
||||
for k, v in archConfigs.items():
|
||||
@@ -100,10 +112,7 @@ def initialize_run(args, normalization_filter=None):
|
||||
for k, v in archConfigs.items():
|
||||
parser.build_metric_value_string(v.dfs, v.dfs_type, normalization_filter)
|
||||
|
||||
runs = OrderedDict()
|
||||
|
||||
# err checking for multiple runs and multiple gpu_kernel filter
|
||||
# TODO: move it to util
|
||||
if args.gpu_kernel and (len(args.path) != len(args.gpu_kernel)):
|
||||
if len(args.gpu_kernel) == 1:
|
||||
for i in range(len(args.path) - 1):
|
||||
@@ -115,6 +124,31 @@ def initialize_run(args, normalization_filter=None):
|
||||
)
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
################################################
|
||||
# Core Functions
|
||||
################################################
|
||||
def initialize_run(args, normalization_filter=None):
|
||||
from collections import OrderedDict
|
||||
from omniperf_analyze.utils import schema
|
||||
|
||||
# Fixme: cur_root.parent.joinpath('soc_params')
|
||||
soc_params_dir = os.path.join(os.path.dirname(__file__), "..", "soc_params")
|
||||
soc_spec_df = file_io.load_soc_params(soc_params_dir)
|
||||
|
||||
if args.list_metrics:
|
||||
list_metrics(args)
|
||||
|
||||
# Load required configs
|
||||
for d in args.path:
|
||||
sys_info = file_io.load_sys_info(Path(d[0], "sysinfo.csv"))
|
||||
arch = sys_info.iloc[0]["gpu_soc"]
|
||||
generate_config(arch, args.config_dir, args.list_kernels, args.filter_metrics)
|
||||
|
||||
load_options(args, normalization_filter)
|
||||
|
||||
runs = OrderedDict()
|
||||
|
||||
# Todo: warning single -d with multiple dirs
|
||||
for d in args.path:
|
||||
w = schema.Workload()
|
||||
@@ -201,10 +235,21 @@ def run_cli(args, runs):
|
||||
parser.load_table_data(
|
||||
runs[d[0]], d[0], is_gui, args.g, args.verbose
|
||||
) # create the loaded table
|
||||
# TODO: In show_* functions always assume newest architecture. This way newest configs/figures are loaded
|
||||
if args.list_kernels:
|
||||
tty.show_kernels(args, runs, archConfigs["gfx90a"], output)
|
||||
tty.show_kernels(
|
||||
args,
|
||||
runs,
|
||||
archConfigs[runs[args.path[0][0]].sys_info.iloc[0]["gpu_soc"]],
|
||||
output,
|
||||
)
|
||||
else:
|
||||
tty.show_all(args, runs, archConfigs["gfx90a"], output)
|
||||
tty.show_all(
|
||||
args,
|
||||
runs,
|
||||
archConfigs[runs[args.path[0][0]].sys_info.iloc[0]["gpu_soc"]],
|
||||
output,
|
||||
)
|
||||
|
||||
|
||||
def roofline_only(path_to_dir, dev_id, sort_type, mem_level, kernel_names, verbose):
|
||||
|
||||
@@ -321,6 +321,71 @@ def update_normUnit_string(equation, unit):
|
||||
).capitalize()
|
||||
|
||||
|
||||
def gen_counter_list(formula):
|
||||
function_filter = {
|
||||
"MIN": None,
|
||||
"MAX": None,
|
||||
"AVG": None,
|
||||
"ROUND": None,
|
||||
"TO_INT": None,
|
||||
"GB": None,
|
||||
"STD": None,
|
||||
"GFLOP": None,
|
||||
"GOP": None,
|
||||
"OP": None,
|
||||
"CU": None,
|
||||
"NC": None,
|
||||
"UC": None,
|
||||
"CC": None,
|
||||
"RW": None,
|
||||
"GIOP": None,
|
||||
"GFLOPs": None,
|
||||
"CONCAT": None,
|
||||
"MOD": None,
|
||||
}
|
||||
|
||||
built_in_counter = [
|
||||
"lds",
|
||||
"grd",
|
||||
"wgr",
|
||||
"arch_vgpr",
|
||||
"accum_vgpr",
|
||||
"sgpr",
|
||||
"scr",
|
||||
"BeginNs",
|
||||
"EndNs",
|
||||
]
|
||||
|
||||
visited = False
|
||||
counters = []
|
||||
if not isinstance(formula, str):
|
||||
return visited, counters
|
||||
try:
|
||||
tree = ast.parse(
|
||||
formula.replace("$normUnit", "SQ_WAVES")
|
||||
.replace("$denom", "SQ_WAVES")
|
||||
.replace(
|
||||
"$numActiveCUs",
|
||||
"TO_INT(MIN((((ROUND(AVG(((4 * SQ_BUSY_CU_CYCLES) / GRBM_GUI_ACTIVE)), \
|
||||
0) / $maxWavesPerCU) * 8) + MIN(MOD(ROUND(AVG(((4 * SQ_BUSY_CU_CYCLES) \
|
||||
/ GRBM_GUI_ACTIVE)), 0), $maxWavesPerCU), 8)), $numCU))",
|
||||
)
|
||||
.replace("$", "")
|
||||
)
|
||||
for node in ast.walk(tree):
|
||||
if isinstance(node, ast.Name):
|
||||
val = str(node.id)[:-4] if str(node.id).endswith("_sum") else str(node.id)
|
||||
if val.isupper() and val not in function_filter:
|
||||
counters.append(val)
|
||||
visited = True
|
||||
if val in built_in_counter:
|
||||
visited = True
|
||||
except:
|
||||
pass
|
||||
|
||||
return visited, counters
|
||||
|
||||
|
||||
def build_dfs(archConfigs, filter_metrics):
|
||||
"""
|
||||
- Build dataframe for each type of data source within each panel.
|
||||
@@ -338,10 +403,16 @@ def build_dfs(archConfigs, filter_metrics):
|
||||
d = {}
|
||||
metric_list = {}
|
||||
dfs_type = {}
|
||||
metric_counters = {}
|
||||
for panel_id, panel in archConfigs.panel_configs.items():
|
||||
panel_idx = str(panel_id // 100)
|
||||
for data_source in panel["data source"]:
|
||||
for type, data_cofig in data_source.items():
|
||||
if type == "metric_table":
|
||||
metric_list[panel_idx] = panel["title"]
|
||||
table_idx = panel_idx + "." + str(data_cofig["id"] % 100)
|
||||
metric_list[table_idx] = data_cofig["title"]
|
||||
|
||||
headers = ["Index"]
|
||||
for key, tile in data_cofig["header"].items():
|
||||
if key != "tips":
|
||||
@@ -355,20 +426,16 @@ def build_dfs(archConfigs, filter_metrics):
|
||||
|
||||
i = 0
|
||||
for key, entries in data_cofig["metric"].items():
|
||||
data_source_idx = (
|
||||
str(data_cofig["id"] // 100)
|
||||
+ "."
|
||||
+ str(data_cofig["id"] % 100)
|
||||
)
|
||||
metric_idx = data_source_idx + "." + str(i)
|
||||
metric_idx = table_idx + "." + str(i)
|
||||
values = []
|
||||
eqn_content = []
|
||||
|
||||
if (
|
||||
(not filter_metrics)
|
||||
or (metric_idx in filter_metrics) # no filter
|
||||
or # metric in filter
|
||||
# the whole table in filter
|
||||
(data_source_idx in filter_metrics)
|
||||
(table_idx in filter_metrics)
|
||||
or
|
||||
# the whole IP block in filter
|
||||
(str(panel_id // 100) in filter_metrics)
|
||||
@@ -378,6 +445,7 @@ def build_dfs(archConfigs, filter_metrics):
|
||||
for k, v in entries.items():
|
||||
if k != "tips" and k != "coll_level" and k != "alias":
|
||||
values.append(v)
|
||||
eqn_content.append(v)
|
||||
|
||||
if "alias" in entries.keys():
|
||||
values.append(entries["alias"])
|
||||
@@ -395,7 +463,21 @@ def build_dfs(archConfigs, filter_metrics):
|
||||
df = pd.concat([df, df_new_row])
|
||||
|
||||
# collect metric_list
|
||||
metric_list[metric_idx] = key.replace(" ", "_")
|
||||
metric_list[metric_idx] = key
|
||||
# generate mapping of counters and metrics
|
||||
filter = {}
|
||||
_visited = False
|
||||
for formula in eqn_content:
|
||||
if formula is not None and formula != "None":
|
||||
visited, counters = gen_counter_list(formula)
|
||||
if visited:
|
||||
_visited = True
|
||||
for k in counters:
|
||||
filter[k] = None
|
||||
|
||||
if len(filter) > 0 or _visited:
|
||||
metric_counters[key] = list(filter)
|
||||
|
||||
i += 1
|
||||
|
||||
df.set_index("Index", inplace=True)
|
||||
@@ -431,6 +513,7 @@ def build_dfs(archConfigs, filter_metrics):
|
||||
setattr(archConfigs, "dfs", d)
|
||||
setattr(archConfigs, "metric_list", metric_list)
|
||||
setattr(archConfigs, "dfs_type", dfs_type)
|
||||
setattr(archConfigs, "metric_counters", metric_counters)
|
||||
|
||||
|
||||
def build_metric_value_string(dfs, dfs_type, normal_unit):
|
||||
@@ -469,7 +552,12 @@ def eval_metric(dfs, dfs_type, sys_info, soc_spec, raw_pmc_df, debug):
|
||||
|
||||
# confirm no illogical counter values (only consider non-roofline runs)
|
||||
roof_only_run = sys_info.ip_blocks == "roofline"
|
||||
if not roof_only_run and (raw_pmc_df["pmc_perf"]["GRBM_GUI_ACTIVE"] == 0).any():
|
||||
rocscope_run = sys_info.ip_blocks == "rocscope"
|
||||
if (
|
||||
not rocscope_run
|
||||
and not roof_only_run
|
||||
and (raw_pmc_df["pmc_perf"]["GRBM_GUI_ACTIVE"] == 0).any()
|
||||
):
|
||||
print("WARNING: Dectected GRBM_GUI_ACTIVE == 0\nHaulting execution.")
|
||||
sys.exit(1)
|
||||
|
||||
@@ -711,12 +799,13 @@ def load_kernel_top(workload, dir):
|
||||
workload.dfs.update(tmp)
|
||||
|
||||
|
||||
def load_table_data(workload, dir, is_gui, debug, verbose):
|
||||
def load_table_data(workload, dir, is_gui, debug, verbose, skipKernelTop=False):
|
||||
"""
|
||||
Load data for all "raw_csv_table".
|
||||
Calculate mertric value for all "metric_table".
|
||||
"""
|
||||
load_kernel_top(workload, dir)
|
||||
if not skipKernelTop:
|
||||
load_kernel_top(workload, dir)
|
||||
|
||||
eval_metric(
|
||||
workload.dfs,
|
||||
|
||||
@@ -52,6 +52,9 @@ class ArchConfig:
|
||||
# [Index: Metric name] pairs
|
||||
metric_list: Dict[str, str] = field(default_factory=dict)
|
||||
|
||||
# [Metric name: Counters] pairs
|
||||
metric_counters: Dict[str, list] = field(default_factory=dict)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Workload:
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
##############################################################################bl
|
||||
# MIT License
|
||||
#
|
||||
# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
##############################################################################el
|
||||
|
||||
import plotly.express as px
|
||||
import pandas as pd
|
||||
|
||||
|
||||
# Notes:
|
||||
# This file includes implementation of a few simple but common charts in CLI.
|
||||
# We try to auto-size the layout to cover most of the cases as default. If it
|
||||
# doesn't work, apply style config in yaml for each dashboard.
|
||||
|
||||
|
||||
def simple_bar(df, title: str = None, id=None, style: dict = None, orientation="h"):
|
||||
"""
|
||||
Plot data with simple bar chart
|
||||
"""
|
||||
|
||||
# TODO: handle None properly
|
||||
if "Metric" in df.columns and ("Count" in df.columns or "Value" in df.columns):
|
||||
detected_label = "Count" if "Count" in df.columns else "Value"
|
||||
df[detected_label] = [
|
||||
x.astype(int) if x != "" else int(0) for x in df[detected_label]
|
||||
]
|
||||
else:
|
||||
raise NameError("simple_bar: No Metric or Count in df columns!")
|
||||
|
||||
# Assign figure characteristics
|
||||
range_color = style.get("range_color", None)
|
||||
label_txt = style.get("label_txt", None)
|
||||
xrange = style.get("xrange", None)
|
||||
if label_txt is not None:
|
||||
label_txt = label_txt.strip("()")
|
||||
try:
|
||||
label_txt = label_txt.replace("+ $normUnit", df["Unit"][0])
|
||||
except KeyError:
|
||||
print("No units found in df. Auto labeling.")
|
||||
|
||||
# Overrides for figure chatacteristics
|
||||
if id == 1701.1:
|
||||
label_txt = "%"
|
||||
range_color = [0, 100]
|
||||
xrange = [0, 110]
|
||||
if id == 1701.2:
|
||||
label_txt = "Gb/s"
|
||||
range_color = [0, 1638]
|
||||
xrange = [0, 1638]
|
||||
|
||||
fig = px.bar(
|
||||
df,
|
||||
title=title,
|
||||
x=detected_label,
|
||||
y="Metric",
|
||||
color=detected_label,
|
||||
range_color=range_color,
|
||||
labels={detected_label: label_txt},
|
||||
orientation=orientation,
|
||||
).update_xaxes(range=xrange)
|
||||
|
||||
return fig
|
||||
|
||||
|
||||
def simple_multi_bar(df, title=None, id=None):
|
||||
"""
|
||||
Plot data with simple multiple bar chart
|
||||
"""
|
||||
|
||||
# TODO: handle Nan and None properly
|
||||
if "Metric" in df.columns and "Avg" in df.columns:
|
||||
df["Avg"] = [x.astype(int) if x != "" else int(0) for x in df["Avg"]]
|
||||
else:
|
||||
raise NameError("simple_multi_bar: No Metric or Count in df columns!")
|
||||
|
||||
dfigs = []
|
||||
nested_bar = {}
|
||||
df_unit = df["Unit"][0]
|
||||
if id == 1604:
|
||||
nested_bar = {"NC": {}, "UC": {}, "RW": {}, "CC": {}}
|
||||
for index, row in df.iterrows():
|
||||
nested_bar[row["Coherency"]][row["Xfer"]] = row["Avg"]
|
||||
if id == 1704:
|
||||
nested_bar = {"Read": {}, "Write": {}}
|
||||
for index, row in df.iterrows():
|
||||
nested_bar[row["Transaction"]][row["Type"]] = row["Avg"]
|
||||
|
||||
for group, metric in nested_bar.items():
|
||||
dfigs.append(
|
||||
px.bar(
|
||||
title=group,
|
||||
x=metric.values(),
|
||||
y=metric.keys(),
|
||||
labels={"x": df_unit, "y": ""},
|
||||
text=metric.values(),
|
||||
)
|
||||
.update_xaxes(showgrid=False, rangemode="nonnegative")
|
||||
.update_yaxes(showgrid=False)
|
||||
)
|
||||
return dfigs
|
||||
مرجع در شماره جدید
Block a user