CUDA学习笔记(第5部分)原子操作
发布时间
阅读量:
阅读量
原子操作指的是,当某一线程(Thread) 需要对同一块显存中的变量依次完成“读取-计算-写入”的流程时,该“读取-计算-写入”的过程必须连续执行,期间不允许穿插任何其他操作。
例如,假设我们希望借助GPU来统计“char data_0[32] = {1,0, … ,1}”这一数组中“0”与“1”的数量,并将结果记录到“int counter[2]”中。
若未采用原子操作,直接在核函数中编写代码:
extern "C" __global__ void kernel_func(int * counter, char * data_0)
{
// 计算线程号
unsigned int block_index = blockIdx.x + blockIdx.y * gridDim.x + blockIdx.z * gridDim.x * gridDim.y;
unsigned int thread_index = block_index * blockDim.x * blockDim.y * blockDim.z + \
threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * blockDim.x * blockDim.y;
//
全部评论 (0)
还没有任何评论哟~
