opencl - OpenCL 内核:__global 变量中的并行求和
问题描述
我已经了解了 Parallel Sum Reduction 技术。但是,我想知道是否可以将来自不同线程的不同值添加到同一个 __global 变量中,如下所示:
浮动一个 = ...; //为每个线程分配不同的a值
Gvar[1] += a; // 同时对同一个全局变量索引求和
谢谢
解决方案
要从不同的工作组更新相同的全局内存位置,您将需要使用原子函数。
您可以从同一组中的不同工作项执行此操作,但这通常不是一个好主意。在组内执行减少本地内存并且在每个工作组中只更新一次全局内存位置几乎总是更有效。
请注意,大多数原子函数不适用于浮点数据类型,因此您需要使用整数类型或替代方法来解决您的问题。
推荐阅读
- python - Pandas:在测试中处理看不见的数据
- google-chrome-extension - Chrome 扩展程序(和/或 tampermonkey 脚本)未在某些网站(如 gmail)上运行
- android - Android:如何从屏蔽广告的数量和网络带宽消耗来衡量广告屏蔽的效果?
- c - 如何获取 SSDT 地址
- ios - 如何知道 Firebase 是否获取了值
- google-maps - 按评论数量对 Google 地图地点进行排序
- linux - Docker 不会绑定到地址;说它正在使用,但它不是
- sql-server - SQL Server:创建函数
- javascript - Prime 检查程序不适用于某些数字
- reactjs - Firebase 身份验证(多种类型的用户)