可以在分支分支中调用Warp投票函数,并且仅在活动线程中考虑其影响。但是,我不确定ballot
在这种情况下是如何运作的?非活动线程总是贡献0吗?或者结果可能是未定义的?
类似的问题:Do warp vote functions synchronize threads in the warp?
一个答案引用了PTX ISA,其中包含一个句子
在投票表格中,vote.ballot.b32只是复制谓词 每个线程在一个warp中进入相应的位位置 目标寄存器d,其中位位置对应于 线程的车道ID。
但它没有解释如何处理非活动线程。
答案 0 :(得分:3)
对于这些warp投票操作中的每一个,结果排除不活动的线程(例如,由于扭曲发散)。非活动线程由__ballot()返回的值中的0位表示,并且在__all()和__any()执行的缩减中不予考虑。