cuda shuffle是怎样实现的

  • 4 replies
  • 36 views
cuda shuffle是怎样实现的
« 于: 十二月 28, 2018, 11:23:41 am »
 本帖最后由 xiyue 于 2018-12-28 11:30 编辑

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




(无标题)
« 回复 #1 于: 十二月 28, 2018, 11:41:33 am »
xiyue你好,

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

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


(无标题)
« 回复 #2 于: 十二月 28, 2018, 11:49:52 am »
xiyue你好,

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

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

(无标题)
« 回复 #3 于: 十二月 28, 2018, 03:22:28 pm »
如果你用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这两个变量时不会冲突吗

(无标题)
« 回复 #4 于: 一月 02, 2019, 12:20:18 pm »
shfl_up_32和shfl_down_32确实是通过__shfl_up和__shfl_down来实现的,我的疑问是,warp内每个线程都需要 ...

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

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

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

或者你给出代码,我也可以为你解释。