任何人都可以谈论功能clEnqueueMapBuffer工作机制.实际上我主要关注的是从这个函数中获得的速度有什么好处clEnqueueRead/WriteBuffer.
PS:是否clEnqueueMapBuffer/clEnqueueMapImage还自动从CPU分配缓冲区?如是.
我想管理我的CPU缓冲区.我的意思是我首先将malloc放在一个大缓冲区.如果我需要缓冲区.我可以从我先分配的大缓冲区中分配它.如何clEnqueueMapBuffer/clEnqueueMapImage从大缓冲区中创建分配缓冲区.
小智 6
clEnqueueMapBuffer/clEnqueueMapImage
OpenCL机制用于访问内存对象而不是使用clEnqueueRead/ Write.我们可以将设备上的内存对象映射到主机上的内存区域.一旦我们映射了对象,我们就可以读取/写入或修改.
Read/ Writebuffer 之间的另一个区别clEnqueueMapBuffer是map_flags参数.如果map_flags设置为CL_MAP_READ,则映射的内存将是只读的,如果设置为CL_MAP_WRITE映射的内存将只写,如果你想同时读取+写入然后制作标志CL_MAP_READ | CL_MAP_WRITE.
与读/写fns相比,内存映射需要三步过程>
clEnqueueMapBuffer.memcpy.clEnqueueUnmapObject.人们普遍认为,与常规读/写相比,内存映射可以显着提高性能,请参见:更快 - AMD devgurus论坛链接
如果要复制图像或图像的矩形区域,则也可以使用clEnqueueMapImage调用.
参考文献: