1、均值滤波
代码主要包括两部分:主机端(CPU)的调用函数和设备端(GPU)的滤波执行函数。
主机端调用函数:分配线程、分配内存还可以对设备端执行进行计时;
设备端滤波执行函数:是图像进行滤波的执行函数,是整个CUDA程序的核心,也叫kernel。
主机端调用函数:
//主机端调用函数
extern "C" void runtestGPU(unsigned char *dst, unsigned char *src, int imageW, int imageH, float *timeGPU)
{
// 创建事件,用于计时
cudaEvent_t startGPUevent, stopGPUevent;
cudaEventCreate(&startGPUevent);
cudaEventCreate(&stopGPUevent);
//event开始-------------------------
cudaEventRecord(startGPUevent, 0);
unsigned char *src_D, *dst_D;
int mem_size;
mem_size = sizeof(unsigned char)*imageW*imageH;
// 分配设备端内存
cudaMalloc((void **) &dst_D, mem_size);
cudaMalloc((void **) &src_D, mem_size);
// 将原始图像从主机端复制到设备端
cudaMemcpy(src_D, src, sizeof(unsigned char)*mem_size, cudaMemcpyHostToDevice);
// 分配线程
dim3 threads(32,