Merge branch 'dev' of https://github.com/AMDResearch/omniperf into kernel_name_mappings

[ROCm/rocprofiler-compute commit: 76da2a9ed5]
This commit is contained in:
JoseSantosAMD
2023-08-08 14:49:59 -05:00
کامیت 67971bca46
56فایلهای تغییر یافته به همراه1345 افزوده شده و 213 حذف شده
@@ -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: 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)
@@ -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
@@ -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)
@@ -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
@@ -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
@@ -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)
@@ -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
@@ -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