找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 85|回复: 4

cuda shuffle是怎样实现的

[复制链接]
发表于 2018-12-28 11:23:41 | 显示全部楼层 |阅读模式
GTC
本帖最后由 xiyue 于 2018-12-28 11:30 编辑

这个同时向左向右shuffle是怎样实现的,向左向右可以同时迭代吗



QQ图片20181228112754.png
回复

使用道具 举报

发表于 2018-12-28 11:41:33 | 显示全部楼层
Jetson TX2
xiyue你好,

这两个函数(shfl_up_32和shfl_down_32), 不是标准的CUDA内置函数(以__shfl开头,注意两个下划线)。

它们是对内置函数的二次包装,请提供他们的包装代码,以便分析。

回复 支持 反对

使用道具 举报

发表于 2018-12-28 11:49:52 | 显示全部楼层
Tesla P100
屠戮人神 发表于 2018-12-28 11:41
xiyue你好,

这两个函数(shfl_up_32和shfl_down_32), 不是标准的CUDA内置函数(以__shfl开头,注意两个 ...

如果你用VS之类的IDE,可以直接在这两个你的项目的函数上面点击右键,选择“转到定义”之类即可看到它们是如何调用内置__shfl*()函数的,此时才能知道它们做了什么,如何做的,以及继续分析实现方式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-28 15:22:28 | 显示全部楼层
屠戮人神 发表于 2018-12-28 11:49
如果你用VS之类的IDE,可以直接在这两个你的项目的函数上面点击右键,选择“转到定义”之类即可看到它们 ...

shfl_up_32和shfl_down_32确实是通过__shfl_up和__shfl_down来实现的,我的疑问是,warp内每个线程都需要old_value4和old_value1两个变量,每个线程都会利用这两个值进行计算更新old_value4和old_value1,在同时__shfl_up和__shfl_down这两个变量时不会冲突吗
回复 支持 反对

使用道具 举报

发表于 2019-1-2 12:20:18 | 显示全部楼层
xiyue 发表于 2018-12-28 15:22
shfl_up_32和shfl_down_32确实是通过__shfl_up和__shfl_down来实现的,我的疑问是,warp内每个线程都需要 ...

(1)你的某些自定义的函数,是如何实现的,你知道,但是你不给出我是不知道的。

你光说它用了****和****, 不给代码,我猜不到啊!!

(2)关于shuffle时候,每个线程给出什么值,取得什么值,值在线程间(精确说,warp的lanes间)如何映射的,请参考手册。

或者你给出代码,我也可以为你解释。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表