小编And*_*ras的帖子

Cuda编程直方图

我想运行一个cuda程序,但我是初学者.我必须为直方图编写一个程序.但是用水桶.根据maxValue(示例中为40),该数字将添加到相应的存储桶中.如果我们有4个桶:

histo:| 1 | 10 | 30 | 39 | 32 | 2 | 4 | 5 | 1 |

0-9(第1桶)

10-19(第2桶)

20-29(第3桶)

30-39(第4桶)

我的GPU具有计算能力1.1.

我试图做一个像块一样的临时temp [],每个线程都在他的临时表上添加他的值:

__global__ void histo_kernel_optimized5( unsigned char *buffer, long size,
                               unsigned int *histo )
{
     extern __shared__ unsigned int temp[];
     temp[threadIdx.x] = 0;
     __syncthreads();

     int i = threadIdx.x + blockIdx.x * blockDim.x;
     int offset = blockDim.x * gridDim.x;
     int bucketID;
     while (i < size)
     {
              bucketID = array[i]/Bwidth;
              atomicAdd( &temp[bucketID], 1);
              i += offset; …
Run Code Online (Sandbox Code Playgroud)

cuda gpu

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

标签 统计

cuda ×1

gpu ×1