Opencl 我们什么时候应该使用CL_MEM_use_HOST_PTR

Opencl 我们什么时候应该使用CL_MEM_use_HOST_PTR,opencl,Opencl,我试图理解英特尔在CPU-GPU Soc上何时使用CL\u MEM\u use\u HOST\u PTR 我在阅读时遇到: 如果应用程序使用特定的内存管理算法,或者 如果要包装现有的本机应用程序内存分配,请 可以将指向clCreateBuffer的指针与 CL_MEM_USE_HOST_PTR标志 是否有人可以举例说明以下内容的含义:特定内存管理算法,以及包装现有的本机应用程序内存分配 CL_MEM_USE_HOST_PTR标志意味着,OpenCL内存对象的内存不会在设备端分配,而是从主机端分配

我试图理解英特尔在CPU-GPU Soc上何时使用
CL\u MEM\u use\u HOST\u PTR

我在阅读时遇到:

如果应用程序使用特定的内存管理算法,或者 如果要包装现有的本机应用程序内存分配,请 可以将指向clCreateBuffer的指针与 CL_MEM_USE_HOST_PTR标志


是否有人可以举例说明以下内容的含义:
特定内存管理算法
,以及
包装现有的本机应用程序内存分配

CL_MEM_USE_HOST_PTR标志意味着,OpenCL内存对象的内存不会在设备端分配,而是从主机端分配的内存中使用。不过,内存内容可能会被缓存(这对用户来说是不透明的)

想象一下,您有一个复杂的库,它有自己复杂的内存分配机制(例如引用计数),等等。手动分配OpenCL内存对象并不容易(通常是不可能的),因为它们必须具有相同的生命周期,由库分配(可能是相同的对齐方式),等等

在这种情况下,在创建OpenCL内存对象时,使用CL_MEM_use_HOST_PTR标志更容易。所有物体的搬运将在发动机罩下进行。这种方法可以为您省去很多痛苦,尤其是当您处理在纯C上实现的大型项目时,内存对象处理总是很棘手