1
运行时
代码中使用hipcub BlockReduce 编译时出现问题
2023-04-06 09:33:44
96

我在对一个程序进行编译时出现了如下图问题:

dtk版本为dtk-22.10.1程序的部分代码为


GPU_GLOBAL void k_reduction_rvec( rvec *input, rvec *results, size_t n )
{
    extern __shared__ hipcub::BlockReduce<double, DEF_BLOCK_SIZE>::TempStorage temp_block[];

    rvec data;
    unsigned int i;

    i = blockIdx.x * blockDim.x + threadIdx.x;

    if ( i < n )
    {
        rvec_Copy( data, input[i] );
    }
    else
    {
        rvec_MakeZero( data );
    }

    data[0] = hipcub::BlockReduce<double, DEF_BLOCK_SIZE>(*temp_block).Sum(data[0]);
    __syncthreads( );
    data[1] = hipcub::BlockReduce<double, DEF_BLOCK_SIZE>(*temp_block).Sum(data[1]);
    __syncthreads( );
    data[2] = hipcub::BlockReduce<double, DEF_BLOCK_SIZE>(*temp_block).Sum(data[2]);

    if ( threadIdx.x == 0 )
    {
#if !defined(GPU_ACCUM_ATOMIC)
        rvec_Copy( results[blockIdx.x], data_s[0] );
#else
        atomicAdd( (double *) &results[0][0], (double) data[0] );
        atomicAdd( (double *) &results[0][1], (double) data[1] );
        atomicAdd( (double *) &results[0][2], (double) data[2] );
#endif
    }

请问如何解决该问题

全部评论(1)
只看楼主
B
brucecui
1楼
#define HIPCUB_ARCH 1试一试
2023/4/7
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据