我想运行一个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)