按照我的理解,branch divergence overhead指的是实际执行时一个warp内执行不同路径的线程所带来的额外开销。这是不是意味着不管程序代码里有多少分支判断语句,只要最终执行时能保证大部分warp内都执行的是同一路径,那么这个overhead就不会高?
用nvvp测试了自己的一个程序,程序是这样的,每个线程分别处理一组数据,根据数据的不同可能执行不同的语句。我把每一组的数据都设成一样,但测试结果中branch divergence overhead一项还是接近于10%,程序中没有任何的随机因素,按理说这一指标不应该是0吗?
楼主您好,如果您没有分支或者分支在warp边界,那么此值不应该10%。
请您发下代码,让论坛为您看下。
代码比较长,不好发。如果我的理解没问题的话,我再自己查一查。