我从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 输入向量的信息?
我如何找出零副本的应用和功能?现在,我评估有零副本(或没有零副本)并期望得到改善的应用程序的总体执行时间。
谢谢你的建议。