近日感觉线程束洗牌指令还是很重要的,下面就记录一下自己的理解。
__shfl_xor命令
int returnValue __shfl_xor(int inputValue,int laneMask,int width=warpSize)
其中,returnValue 是从源线程中那个值返回的值,inputValue是此线程作为源线程输入给源线程的值。
laneMask则决定了本线程与那个束内线程相关。那么如何判定关联的束内线程id呢?是用束内线程id的按位异或值来表示的,示例如下:
图1 相关联线程示意
这样我们比较清楚的了解两个数据交换线程的关系了,当laneMask为1时属于相邻蝴蝶式的交叉互换,为其他值时有类似意义。
图2 代码参数的值及其含义
当处理的数为double时的做法
--TODO
--2020.12.27 今日去了上图借书并待了一天,乘了一次今天开始试运行的18号线。
自然赠与你
树冠 微风 肩头的暴雨
片刻后生成
平衡 忠诚 不息的身体 --by 万青