执行OpenCL零复制

时间:2018-11-23 07:15:00

标签: opencl

我从OpenCL开始,我在使用OpenCL 1.2 Full Profile设备。我想执行零复制。

现在我要做

// creation of an input vector
int *A = (int*)malloc(sizeof(int)*LIST_SIZE);

//OpenCL buffer to create
cl_mem a_obj = clCreateBuffer(context,CL_MEM_READ_ONLY|CL_MEM_USE_HOST_PTR,sizeof(int),A,&ret);
//Enabling the "pinned memory"
void* p_map_input = clEnqueueMapBuffer(queue,a_obj,CL_TRUE,CL_MAP_READ,0,sizeof(int),0,NULL,NULL,&ret);
...
...
...
// Setting the arguments of the kernel
ret = clSetKernelArg(kernel,0,sizeof(cl_mem),(void *)&a_obj);
//Execute the OpenCL kernel 
ret = clEnqueueNDRangeKernel(queue,kernel,1,NULL,&g_item_size, &l_item_size,0,NULL,&ev);

我想了解更多有关使用什么以及如何使用 clEnqueueMapBuffer 的指针 p_map_input 并正确映射到 A 输入向量的信息?

我如何找出零副本的应用和功能?现在,我评估有零副本(或没有零副本)并期望得到改善的应用程序的总体执行时间。

谢谢你的建议。

0 个答案:

没有答案