gpt4 book ai didi

opencl - 如何从数组中获取总和数组

转载 作者:行者123 更新时间:2023-12-02 04:49:35 24 4
gpt4 key购买 nike

我是 openCL 的新手。

我知道如何对一维数组求和。但我的问题是如何从 openCL 中的 1 个一维数组中获取总和数组。

 int a[1000];
int b[1000];
.... //save data to a
for(int i = 0 ;i < 1000; i ++){
int sum = 0;
for(int j = 0 ;j < i; j ++){
sum += a[j];
}
b[i] = sum;
}

欢迎提出任何建议。

最佳答案

正如其他人所提到的 - 你想要做的是使用包含并行前缀和。如果允许您使用 OpenCL 2,they have a workgroup function for it - 他们应该从一开始就把它放在那里,因为它的使用频率很高 - 所以现在我们让每个人都自己实现它,但通常以某种方式很糟糕。

参见 Parallel Prefix Sum (Scan) with CUDA用于教学的典型算法。

在你提到的数字上,使用多个计算单元是没有意义的,这意味着你将用一个计算单元攻击它 - 所以只需重复循环两次左右 - 在 64-256,你将得到的总和这么多元素很快。构建工作组函数以获得任何大小的通用缩减函数对读者来说是一个练习。

关于opencl - 如何从数组中获取总和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29952336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com