小编Ter*_*met的帖子

CUDA - 并行归约和

我正在尝试在 CUDA 7.5 中实现并行归约和。我一直在尝试遵循NVIDIA PDF,它会引导您完成初始算法,然后稳步优化版本。我目前正在制作一个用 1 作为每个数组位置的值的数组,以便我可以检查输出是否正确,但我得到的值为 -842159451 的大小为 64 的数组。我期待内核代码是正确的,因为我遵循了 NVIDIA 的确切代码,但这是我的内核:

__global__ void reduce0(int *input, int *output) {
    extern __shared__ int sdata[];

    unsigned int tid = threadIdx.x;
    unsigned int i = blockIdx.x * blockDim.x + threadIdx.x;

    sdata[tid] = input[i];

    __syncthreads();

    for (unsigned int s = 1; s < blockDim.x; s *= 2) {
        if (tid % (2 * s) == 0) {
            sdata[tid] += sdata[tid + s];
        }

        __syncthreads();
    }

    if (tid == 0) output[blockIdx.x] = …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing cuda

6
推荐指数
1
解决办法
5645
查看次数

标签 统计

c++ ×1

cuda ×1

parallel-processing ×1