我已经了解了平行和减少技术。但是,我想知道是否可以将不同线程中的不同值添加到同一个__global变量中,如下所示:
浮动a = ...; //为每个线程分配不同的值
Gvar [1] + = a; //同时对相同的全局变量索引
进行求和由于
答案 0 :(得分:0)
要从不同的工作组更新相同的全局内存位置,您需要使用atomic functions。
您可以在同一组中的不同工作项中执行此操作,但这通常是一个坏主意。在组内执行本地内存减少几乎总是更有效,并且只在每个工作组中更新一次全局内存位置。
请注意,大多数原子函数不适用于浮点数据类型,因此您需要使用整数类型或其他方法来解决您的问题。