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进制表示), 我这个线程的值是多少, 具体操作的数(操作的方式以及在函数名体现)
相关推荐
点心的游戏开发世界5 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
事圆则缓7 小时前
Kotlin 协程完全指南
开发语言·kotlin
我爱写代码i7 小时前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路7 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
统计学小王子8 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言
知无不研8 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴8 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
dsyyyyy11019 小时前
JS复习,难点,易错点总结
开发语言·javascript·ecmascript
“AI国潮设计-小江”10 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
小刘在重生~11 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python