GPU编程与流处理器(七)
发布时间
阅读量:
阅读量
GPU编程和流式多处理器(七)
6. 杂项说明
6.1. warp级原语
warp作为执行的基本单元(自然处于线程与块之间),其重要性对于CUDA程序员而言是显而易见的。从SM 1.x版本开始,NVIDIA逐步引入了专门针对线程的操作指令。
Vote
CUDA架构基于32位设计,每个warp由32个线程组成,这些线程在评估条件时,会将1位结果广播至warp中的所有线程,并确保指令能够完全匹配。VOTE指令(首次在SM 1.2中出现)用于计算该指令的执行状态,并将结果广播给warp内的所有线程。__any()默认返回值为1,只要在32个线程中有任意一个满足条件即可成立;__all()默认返回值为1,当且仅当所有32个线程都满足条件时才成立。
Fermi架构进一步扩展了VOTE指令的功能,新增了变体形式,允许将每个线程的谓词结果回传。__ballot()则会汇总所有线程的状态信息,并以一个32位数值的形式返回,其中每一位对应相应线程的状态信息。
Shuffle随机播放
Kepler架构引入了shuffle指令集,使得内部线程之间可以实现数据交换而无需借助共享内存进行临时存储。尽管这些操作与使用共享内存的执行时间相同,但优势在于无需进行读写操作即可完成数据交换,并能有效降低对共享内存的依赖程度。
以下指令包含于多个定义于sm_30_intrinsic
全部评论 (0)
还没有任何评论哟~
