cuda - CUDA中的累积求和

标签 cuda parallel-processing gpgpu numerical-methods

有人可以指出正确的方向如何并行执行这种类型的计算,或者告诉我此方法的通用名称是什么?我认为这些不会返回相同的结果。

C++

for (int i = 1; i < width; i++)
        x[i] = x[i] + x[i-1];

CUDA
int i = blockIdx.x * blockDim.x + threadIdx.x

if ((i > 0) && (i < (width)))
    X[i] = X[i] + X[i-1];

最佳答案

这看起来像一个累加和运算,其中x[i]的最终值是原始数组中所有值x[0]...x[i]的总和。

在CUDA中,这称为扫描或前缀和运算,并且可以有效地并行化。参见例如this lecture为例。

关于cuda - CUDA中的累积求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251335/

相关文章:

2020 年 CUDA 驱动程序 API 与运行时 API

CMake v3.4.1 在 Ubuntu 16.04 上找到 CUDA 7.5 而不是 CUDA 8.0

cuda - 1 个 CUDA 内核能否在每个时钟(麦克斯韦)处理超过 1 个浮点指令?

python - 调试并行 Python 程序 (mpi4py)

c++ - VexCL 中的密集矩阵 vector 乘法

并发内核启动示例 - CUDA

cuda - Tensorflow无法打开libcuda.so.1

c++ - 如何在 CUDA 内核中使用 Eigen

multithreading - Flutter Dart : How can we achieve multithreading like python or java in dart

haskell - 写入 "fib"并行运行: -N2 is slower?