[Mesa-dev] [PATCH 3/3] nvc0: Change type of some metrics to float
Samuel Pitoiset
samuel.pitoiset at gmail.com
Thu Jun 15 12:28:25 UTC 2017
As mentioned offline, patch 1 is missing previous Marek's Rb, please
re-add it before pushing.
Looks good to me.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
On 06/15/2017 02:11 PM, Boyan Ding wrote:
> 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
>
More information about the mesa-dev
mailing list