小编sal*_*ali的帖子

CUDA - 一个轴上的并行缩减

我对 CUDA 编程相当陌生,我正在尝试编写一个 CUDA 内核,用于仅对 3 维张量的 1 维进行并行缩减,该张量是float馈入内核的行主展平数组。

换句话说,我试图用,和numpy.sum的有限轴组合重写。axis=0axis=1axis=2

我已经成功实现了“reduce over axis 0”和“reduce over axis 1”,但是“reduce over axis2”的性能问题让我在这里发布了一个问题来寻求建议。

内核以一维网格和一维块配置启动,并将每个线程映射到缩减输出张量的每个元素。所以,它应该是这样的: 在此输入图像描述

这是我的内核:

__global__ void kernel_reduce_sum_3d_try02(
        float* g_idata,
        float* g_odata,
        int dim0,
        int dim1,
        int dim2,
        int overaxis0,
        int overaxis1,
        int overaxis2)
{

    if (overaxis0 == 0 && overaxis1 == 0 && overaxis2 == 1) { 
        // static shared memory
        __shared__ float smem_store[BLOCK_SIZE];

        // set thread ID
        //unsigned int tid = threadIdx.x;
        unsigned int tid …
Run Code Online (Sandbox Code Playgroud)

cuda reduction gpu-shared-memory

0
推荐指数
1
解决办法
2245
查看次数

标签 统计

cuda ×1

gpu-shared-memory ×1

reduction ×1