【发布时间】:2018-05-25 17:31:04
【问题描述】:
我已经了解了 Parallel Sum Reduction 技术。但是,我想知道是否可以将来自不同线程的不同值添加到同一个 __global 变量中,如下所示:
浮点数 = ...; // 为每个线程分配不同的a值
Gvar[1] += a; // 同时对同一个全局变量索引求和
谢谢
【问题讨论】:
标签: opencl
我已经了解了 Parallel Sum Reduction 技术。但是,我想知道是否可以将来自不同线程的不同值添加到同一个 __global 变量中,如下所示:
浮点数 = ...; // 为每个线程分配不同的a值
Gvar[1] += a; // 同时对同一个全局变量索引求和
谢谢
【问题讨论】:
标签: opencl
要从不同的工作组更新相同的全局内存位置,您需要使用atomic functions。
您可以从同一组中的不同工作项中执行此操作,但这通常是个坏主意。在组内减少本地内存并在每个工作组中只更新一次全局内存位置几乎总是更有效。
请注意,大多数原子函数不适用于浮点数据类型,因此您需要使用整数类型或其他方法来解决您的问题。
【讨论】: