大多数并行缩减算法使用共享(本地)内存。
英伟达、AMD、英特尔等。
但是,如果设备没有共享(本地)内存。
我该怎么做?
如果我使用相同的算法但在全局内存上存储临时值,它会正常工作吗?
大多数并行缩减算法使用共享(本地)内存。
英伟达、AMD、英特尔等。
但是,如果设备没有共享(本地)内存。
我该怎么做?
如果我使用相同的算法但在全局内存上存储临时值,它会正常工作吗?
如果设备支持 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> 中的 <op>定义了运算符,可以是add、min或max。
如果我考虑一下,我的评论已经是完整的答案。
是的,您可以使用全局内存来代替本地内存,但是:
如果我今晚有时间,我会发布一个简单的例子。