[Mesa-dev] [PATCH 3/3] nvc0: Change type of some metrics to float
Boyan Ding
boyan.j.ding at gmail.com
Thu Jun 15 12:11:39 UTC 2017
Metrics such as IPC are better represented as floats instead of ints.
This will help query with AMD_performance monitor to return more
useful values instead of 0 and 1s.
Signed-off-by: Boyan Ding <boyan.j.ding at gmail.com>
---
.../drivers/nouveau/nvc0/nvc0_query_hw_metric.c | 28 +++++++++++-----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_metric.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_metric.c
index 6d4deaf2ba..b5de02f9fb 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_metric.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_metric.c
@@ -54,12 +54,12 @@ static const struct nvc0_hw_metric_cfg {
_Q(INST_REPLAY_OVERHEAD,
"metric-inst_replay_overhead",
- UINT64,
+ FLOAT,
"Average number of replays for each instruction executed"),
_Q(ISSUED_IPC,
"metric-issued_ipc",
- UINT64,
+ FLOAT,
"Instructions issued per cycle"),
_Q(ISSUE_SLOTS,
@@ -75,12 +75,12 @@ static const struct nvc0_hw_metric_cfg {
_Q(IPC,
"metric-ipc",
- UINT64,
+ FLOAT,
"Instructions executed per cycle"),
_Q(SHARED_REPLAY_OVERHEAD,
"metric-shared_replay_overhead",
- UINT64,
+ FLOAT,
"Average number of replays due to shared memory conflicts for each "
"instruction executed"),
@@ -520,12 +520,12 @@ sm20_hw_metric_calc_result(struct nvc0_hw_query *hq, uint64_t res64[8])
case NVC0_HW_METRIC_QUERY_INST_REPLAY_OVERHEAD:
/* (inst_issued - inst_executed) / inst_executed */
if (res64[1])
- result.u64 = (res64[0] - res64[1]) / (double)res64[1];
+ result.f = (res64[0] - res64[1]) / (double)res64[1];
break;
case NVC0_HW_METRIC_QUERY_ISSUED_IPC:
/* inst_issued / active_cycles */
if (res64[1])
- result.u64 = res64[0] / (double)res64[1];
+ result.f = res64[0] / (double)res64[1];
break;
case NVC0_HW_METRIC_QUERY_ISSUE_SLOT_UTILIZATION:
/* ((inst_issued / 2) / active_cycles) * 100 */
@@ -535,7 +535,7 @@ sm20_hw_metric_calc_result(struct nvc0_hw_query *hq, uint64_t res64[8])
case NVC0_HW_METRIC_QUERY_IPC:
/* inst_executed / active_cycles */
if (res64[1])
- result.u64 = res64[0] / (double)res64[1];
+ result.f = res64[0] / (double)res64[1];
break;
default:
debug_printf("invalid metric type: %d\n",
@@ -565,14 +565,14 @@ sm21_hw_metric_calc_result(struct nvc0_hw_query *hq, uint64_t res64[8])
case NVC0_HW_METRIC_QUERY_INST_REPLAY_OVERHEAD:
/* (metric-inst_issued - inst_executed) / inst_executed */
if (res64[4])
- result.u64 = (((res64[0] + res64[1] + (res64[2] + res64[3]) * 2) -
- res64[4]) / (double)res64[4]);
+ result.f = (((res64[0] + res64[1] + (res64[2] + res64[3]) * 2) -
+ res64[4]) / (double)res64[4]);
break;
case NVC0_HW_METRIC_QUERY_ISSUED_IPC:
/* metric-inst_issued / active_cycles */
if (res64[4])
- result.u64 = (res64[0] + res64[1] + (res64[2] + res64[3]) * 2) /
- (double)res64[4];
+ result.f = (res64[0] + res64[1] + (res64[2] + res64[3]) * 2) /
+ (double)res64[4];
break;
case NVC0_HW_METRIC_QUERY_ISSUE_SLOTS:
/* issued1_0 + issued1_1 + issued2_0 + issued2_1 */
@@ -617,12 +617,12 @@ sm30_hw_metric_calc_result(struct nvc0_hw_query *hq, uint64_t res64[8])
case NVC0_HW_METRIC_QUERY_INST_REPLAY_OVERHEAD:
/* (metric-inst_issued - inst_executed) / inst_executed */
if (res64[2])
- result.u64 = (((res64[0] + res64[1] * 2) - res64[2]) / (double)res64[2]);
+ result.f = (((res64[0] + res64[1] * 2) - res64[2]) / (double)res64[2]);
break;
case NVC0_HW_METRIC_QUERY_ISSUED_IPC:
/* metric-inst_issued / active_cycles */
if (res64[2])
- result.u64 = (res64[0] + res64[1] * 2) / (double)res64[2];
+ result.f = (res64[0] + res64[1] * 2) / (double)res64[2];
break;
case NVC0_HW_METRIC_QUERY_ISSUE_SLOTS:
/* inst_issued1 + inst_issued2 */
@@ -638,7 +638,7 @@ sm30_hw_metric_calc_result(struct nvc0_hw_query *hq, uint64_t res64[8])
case NVC0_HW_METRIC_QUERY_SHARED_REPLAY_OVERHEAD:
/* (shared_load_replay + shared_store_replay) / inst_executed */
if (res64[2])
- result.u64 = (res64[0] + res64[1]) / (double)res64[2];
+ result.f = (res64[0] + res64[1]) / (double)res64[2];
break;
case NVC0_HW_METRIC_QUERY_WARP_EXECUTION_EFFICIENCY:
/* thread_inst_executed / (inst_executed * max. number of threads per
--
2.13.1
More information about the mesa-dev
mailing list