cuda - 减少奇数元素CUDA

标签 cuda parallel-processing gpu reduction

似乎只能对奇数个元素进行归约。例如,它需要对数字求和。当我有偶数个元素时,它会是这样的:

1 2 3 4
1+2
3+3
6+4

但是当我有,例如 1 2 3 4 5 时该怎么办?最后一次迭代是三个元素之和 6+4+5 还是什么?我看到了同样的问题here ,却找不到答案。

最佳答案

并行归约将首先添加成对的元素:

1  1+3   4+6
2  2+4
3
4

您的元素数量为奇数的示例通常会实现为:

1  1+4  5+3  8+7
2  2+5  7+0
3  3+0
4  0+0
5
0
0
0

也就是说,通常并行缩减将使用一组 2 的幂线程,并且最多一个线程 block (最后一个)将少于完整的数据来处理。处理此问题的常用方法是将数据零填充到线程 block 大小。如果你研究cuda parallel reduction示例代码,您会找到这方面的示例。

关于cuda - 减少奇数元素CUDA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815198/

相关文章:

c# - C# : How to Maximize Parallelism 中的并行分区算法

c++ - CUDA/开放式;将分支重写为非分支表达式

ubuntu - 在ubuntu中用cuda编译opencv的makefile停止工作

opencv - 实时图像处理的建议

c++ - thrust::binary_search 在运行时失败,执行策略指定了用户流

python - 通过 multiprocessing.Queue 传递 numpy 数组

cuda - 设置nvcc的默认主机编译器

python - 如何在 TensorFlow 中使用分布式 DNN 训练?

amazon-web-services - AWS EC2 实例在重启后失去 GPU 支持

multithreading - 深度解析CPU和GPU的区别