2014-05-05 71 views
0

__shfl_up(int var, unsigned int delta, int width = warpSize)中的寬度參數是什麼意思? 假設泳道4中的var equals 4和泳道8中的var equals 8。如果我在泳道8中撥打__shfl_up(var, 4, 8),它返回的是什麼?函數__shfl_up(int var,unsigned int delta,int width)的width參數是什麼意思?

+0

請看[this](https://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/)和[this](http://acceleware.com/blog/keplers-shuffle) - 指令)文章。 – sgarizvi

+0

我已經得到了答案。寬度將變形分爲32個/寬度分區,每個分區都有寬度元素。第8車道呼叫__shfl_up(var,4,8)與第一車道的呼叫相似。因此由第8道調用的__shfl_up(var,4,8)返回第8道變量本身。謝謝! – scdeng

+2

如果有人發佈答案,那該怎麼辦? –

回答

2

width參數將warpSize(通常爲32)分割爲多個分區,每個分區都有寬度元素。假設來電者的warp id是laneId。調用__shfl_up(var,offset,width)將計算源泳道ID,srclaneId =(laneId%width) - 偏移量。如果srclaneId在0和寬度-1之間(包含),並且srclaneId的線程處於活動狀態(請參閱Active thread in a warp),則__shfl_up(var,offset,width)將返回srclaneId的var值,否則返回laneid var的值。此外,寬度必須是2的冪(即2,4,8,16或32)。

相關問題