函数__shfl_up(int var,unsigned int delta,int width)的width参数是什么意思?

时间:2014-05-05 09:46:42

标签: cuda gpgpu

__shfl_up(int var, unsigned int delta, int width = warpSize)中的宽度参数是什么意思? 假设第4道中为var equals 4,第8道为var equals 8,如果我在第8道中呼叫__shfl_up(var, 4, 8),它会返回什么内容?

1 个答案:

答案 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)。