在CPU和GPU上并行处理图像

时间:2020-03-10 03:30:46

标签: gpu gpuimage cpu-cache gpu-programming opencl-c

我正在做一个项目,在该项目中,我必须对UHD图像的每个像素进行一些操作,并将该值写入目标指针所指向的位置。我正在使用sm7150芯片组。 当以全局工作组大小为(Width / 4,Height / 4)运行GPU代码时,运行时间为20ms。 现在,我试图在GPU上并行运行3/4图像,在CPU上并行运行1/4图像。.我做对了吗?

clCreateBuffer(上下文,CL_MEM_USE_HOST_PTR | CL_MEM_READ_WRITE,大小,src_ptr,errcode_ret) clCreateBuffer(上下文,CL_MEM_USE_HOST_PTR | CL_MEM_READ_WRITE,大小,dst_ptr,errcode_ret) ...

global_size [2] = {out_w / 4,(out_h / 4)*(3/4)};

clEnqueueNDRangeKernel(queue_,kernel,2,NULL,global_size,NULL,0,NULL,&event_kernel); //这里添加了1/4帧的cpu代码以实现并行激励 clFinish(queue _);

我使用CL_MEM_USE_HOST_PTR来避免将内存复制到GPU缓存,每个像素上的操作都是独立的(使用映射副本) 但是,我发现CPU和GPU的运行时间都大大增加了,并行化有问题吗?有人,请帮助。

0 个答案:

没有答案