OpenCL内核:__global变量中的并行求和

时间:2018-05-25 06:49:57

标签: opencl

我已经了解了平行和减少技术。但是,我想知道是否可以将不同线程中的不同值添加到同一个__global变量中,如下所示:

浮动a = ...; //为每个线程分配不同的值

Gvar [1] + = a; //同时对相同的全局变量索引

进行求和

由于

1 个答案:

答案 0 :(得分:0)

要从不同的工作组更新相同的全局内存位置,您需要使用atomic functions

您可以在同一组中的不同工作项中执行此操作,但这通常是一个坏主意。在组内执行本地内存减少几乎总是更有效,并且只在每个工作组中更新一次全局内存位置。

请注意,大多数原子函数不适用于浮点数据类型,因此您需要使用整数类型或其他方法来解决您的问题。