CUDA计算直方图,采用线程一对一映射实现,怎么定义线程块和线程

dreamcraneleaf 2015-05-21 08:54:37
__global__ void myhistKernel(const unsigned int const * d_hist_data,unsigned int * const d_bin_data)
{
__shared__ unsigned int d_bin_data_shared[256];
const unsigned int idx=(blockIdx.x * (blockDim.x*N)) + threadIdx.x;
const unsigned int idy=(blockIdx.y * blockDim.y) + threadIdx.y;
const unsigned int tid=idx+idy * (blockDim.x*N) * (gridDim.x);
d_bin_data_shared[threadIdx.x]=0;
__syncthreads();
const unsigned int value_u32 = d_hist_data[tid];

atomicAdd(&(d_bin_data_shared[ ((value_u32 & 0x000000FF)) ]),1);
atomicAdd(&(d_bin_data_shared[ ((value_u32 & 0x0000FF00) >>8 ) ]),1);
atomicAdd(&(d_bin_data_shared[ ((value_u32 & 0x00FF0000) >>16 ) ]),1);
atomicAdd(&(d_bin_data_shared[ ((value_u32 & 0xFF000000) >>24 ) ]),1);

__syncthreads();
atomicAdd(&(d_bin_data[threadIdx.x]),d_bin_data_shared[threadIdx.x]);
}
...全文
116 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

581

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧