gpt4 book ai didi

cuda - 当大小不是 2 的幂时向量和的减少?

转载 作者:行者123 更新时间:2023-12-01 11:46:05 28 4
gpt4 key购买 nike

对于 GPU 上的经典归约算法,如果向量的大小是 2 的幂,它就可以完美运行。如果不是这种情况怎么办?在某些时候,我们将不得不找到奇数个元素的总和。处理这种情况的最佳方法是什么?

最佳答案

您可以计算大小不为 2 的幂的矩阵的总和。看例子:

#include <math.h>
#define N 1022 //total size
__global__ void sum(int *A, int *C)
{
__shared__ int temp[blockDim.x];
int idx = threadIdx.x+blockDim.x*blockIdx.x;
int local_idx = threadIdx.x;
temp[local_idx] = A[idx];
int i=ceil(blockDim.x/2);
__syncthreads();
while(i!=0)
{
if(idx+i<N && local_idx<i)
temp[local_idx] += tmp[local_idx+i];
i/=2;
__syncthreads();

}
if(local_idx == 0)
C[blockIdx.x] = temp[0];
}

关于cuda - 当大小不是 2 的幂时向量和的减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161575/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com