__shfl_up(int var, unsigned int delta, int width = warpSize)
中的宽度参数是什么意思?
假设第4道中为var equals 4
,第8道为var equals 8
,如果我在第8道中呼叫__shfl_up(var, 4, 8)
,它会返回什么内容?
答案 0 :(得分:2)
width参数将warpSize(通常为32)分为多个分区,每个分区都有宽度元素。我们假设调用者的warp id是laneId。调用__shfl_up(var,offset,width)将计算源通道id,srclaneId =(laneId%width) - 偏移量。如果srclaneId介于0和width-1(含)之间并且srclaneId的线程处于活动状态(请参阅Active thread in a warp),__ shfl_up(var,offset,width)将返回srclaneId&var;的值,否则返回laneid的变量值另外,宽度必须是2的幂(即2,4,8,16或32)。