大多数并行缩减算法都使用共享(本地)内存。
Nvidia,AMD,英特尔等。
但是,如果设备没有共享(本地)内存。
我该怎么做?
如果我使用相同的算法但是将临时值存储在全局内存中,它会正常工作吗?
答案 0 :(得分:3)
如果设备支持OpenCL 2.0,则可以使用work_group_reduce:
gentype work_group_reduce< op> (gentype x)
< work_group_reduce_< 中的操作> op> , work_group_scan_exclusive_< op> 和 work_group_scan_inclusive_< op> 定义运算符,可以添加, min 或 max 。
答案 1 :(得分:1)
如果我考虑一下,我的评论已经是完整的答案。
是的,您可以使用全局内存替换本地内存,但是:
如果我今晚有时间,我会发一个简单的例子。