如分支统计manual中所述,有两个指标:分支效率和控制流效率。
前者具有硬件计数器branch_efficiency
。但是,似乎没有针对后者的直接硬件计数器。是否可以找到已执行和已发布控制流指令的比率并将其用作第二效率指标?还是控制流利用率指标cf_fu_utilization
?
由于控制流效率可以解释为扭曲中一条指令的活动线程数,因此我猜想warp_execution_efficiency
也可以使用,因为定义是这样
多处理器所支持的每个Warp的平均活动线程数与每个Warp的最大线程数之比
对此有何评论?
答案 0 :(得分:2)
分支效率和控制流效率都是度量。可以在单个psd中收集分支效率,并根据SM值进行显示。控制流效率为smsp__thread_inst_exected / smsp__inst_exected / WARP_SIZE * 100.0。无法在所有硬件上一次通过所有SM收集这些计数器,因此该指标在图表上显示为所有SM的平均值。
如果使用CUPTI / NVPROF,则硬件事件为:
这些事件可用于计算average_threads_executed_per_inst_exected或average_threads_executed_not_predicated_off_per_inst_exected。可以通过/ 32 x 100.0转换为%。
如果条件的主体很小(几个指令),编译器将使用谓词而不是分支。