Warp shuffle函数

Warp shuffle 函数在 warp 内未退出的线程之间交换一个值,无需使用共享内存。

其实就是, 在warp内部32个线程中, 当前线程可以通过shuffle指令去获得另一个线程的值, 且这种操作无需共享内存, 直接获得, 在warp内使用很方便, 获取的方式有四种:

  1. 参与的线程, 统一拿某个值, 比如所以线程的值都拿0号线程的值, 也就是广播, 这就是**__shfl_sync(0xFFFFFFFF, val, 0)**指令
  2. 参与的线程, 统一往下(线程数小的方向)拿相隔2个位置的值, 往小方向拿值, 那就是拿自己相隔2个位置的后面的值, 这就是**__shfl_down_sync(0xFFFFFFFF, val, 2)**
  3. 参与的线程, 统一往上(线程数大的方向)拿相隔2个位置的值, 往大方向拿值, 那就是拿自己相隔2个位置的前面的值, __shfl_up_sync(0xFFFFFFFF, val, 2)
  4. 参与的线程, 这种方式特殊, 不再是加减这种运算, 而是参与的线程通过异或操作去得到要拿线程的位置, 比如**__shfl_xor_sync(0xFFFFFFFF, val, 1)**, 每个线程的索引号和1进行异或拿值, 比如0xor1=1, 1xor1=0, 2(10)xor1=3, 3(11)xor1=2, 4(100)xor1=5, 5(101)xor1=4, 规律就是参与的32个线程, 两两互相拿值, 异或就很神奇了, 也有点难,
  5. 这四个函数的三个参数的意思分别是: 参与的线程数量(用16进制表示), 我这个线程的值是多少, 具体操作的数(操作的方式以及在函数名体现)
相关推荐
普通人65 小时前
php+html+canvas实现树状打开的结构
开发语言·javascript·html5·1024程序员节
电商API_180079052476 小时前
反向海淘多币种结算:汇率该在哪个时点被冻结
java·开发语言·数据库·跨境电商·1688 api
开开心心就好6 小时前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
Want5956 小时前
Python炫酷烟花①
开发语言·python
星夜离尘567 小时前
MATLAB 线性去趋势为何损伤低频正弦:联合最小二乘估计幅相与漂移
开发语言·matlab
程序员清风8 小时前
双指针与滑动窗口:高效处理连续区间
开发语言·算法
开开心心就好8 小时前
文件被占用删不掉?解锁工具强制删除
java·运维·服务器·开发语言·前端·pdf·ocr
云和数据.ChenGuang8 小时前
python大小整数范围解析
java·开发语言·python
fensnote8 小时前
西门子 S7 PLC 内部寄存器读写 Demo(C 语言)
c语言·开发语言
benchmark_cc9 小时前
量化项目启动时,应该先设计数据接口还是先编写策略?从系统架构角度做出正确选择
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash