正如分支统计manual所述,有两个指标:分支效率和控制流效率。
前者有一个硬件计数器branch_efficiency
。但是,似乎后者没有直接的硬件计数器。是否有可能找到执行和发布的控制流指令的比率,并将其用作第二个效率指标?或控制流量利用率指标cf_fu_utilization
?
由于控制流效率可以解释为warp中一条指令有效的线程数,我想也可以使用warp_execution_efficiency
,因为定义说
每个warp的平均活动线程数与多处理器上支持的每个warp的最大线程数之比
对此有何评论?
分支效率和控制流效率都是指标。可以在单个psd中收集分支效率,并且根据SM值显示。控制流效率为smsp__thread_inst_executed / smsp__inst_executed / WARP_SIZE * 100.0。无法在所有硬件上一次性从所有SM收集这些计数器,因此度量标准在图表上显示为所有SM的平均值。
如果使用CUPTI / NVPROF,则硬件事件为:
这些事件可用于计算average_threads_executed_per_inst_executed或average_threads_executed_not_predicated_off_per_inst_executed。这可以转换为%by / 32 x 100.0。
如果条件的主体很小(几条指令),编译器将使用预测而不是分支。