控制流量效率

问题描述 投票:0回答:1

正如分支统计manual所述,有两个指标:分支效率和控制流效率。

前者有一个硬件计数器branch_efficiency。但是,似乎后者没有直接的硬件计数器。是否有可能找到执行和发布的控制流指令的比率,并将其用作第二个效率指标?或控制流量利用率指标cf_fu_utilization

由于控制流效率可以解释为warp中一条指令有效的线程数,我想也可以使用warp_execution_efficiency,因为定义说

每个warp的平均活动线程数与多处理器上支持的每个warp的最大线程数之比

对此有何评论?

cuda control-flow
1个回答
2
投票

分支效率和控制流效率都是指标。可以在单个psd中收集分支效率,并且根据SM值显示。控制流效率为smsp__thread_inst_executed / smsp__inst_executed / WARP_SIZE * 100.0。无法在所有硬件上一次性从所有SM收集这些计数器,因此度量标准在图表上显示为所有SM的平均值。

如果使用CUPTI / NVPROF,则硬件事件为:

  • inst_executed:每个warp执行的指令数。警告:说明中指出“每次扭曲”。这应该是总和。
  • thread_inst_executed:活动线程执行的指令数。对于每条指令,它按执行指令的线程数(包括断言线程)递增。它不包括重播。
  • not_predicated_off_thread_inst_executed:未执行断言的已执行线程指令数

这些事件可用于计算average_threads_executed_per_inst_executed或average_threads_executed_not_predicated_off_per_inst_executed。这可以转换为%by / 32 x 100.0。

如果条件的主体很小(几条指令),编译器将使用预测而不是分支。

© www.soinside.com 2019 - 2024. All rights reserved.