我们什么时候应该使用CL_MEM_USE_HOST_PTR

时间:2014-08-05 08:55:27

标签: opencl

我试图了解何时在英特尔的CPU-GPU Soc上使用CL_MEM_USE_HOST_PTR

阅读this guide我遇到了:

  

如果您的应用程序使用特定的内存管理算法,或者如果   您希望包装现有的本机应用程序内存分配   可以传递指向clCreateBuffer的指针   CL_MEM_USE_HOST_PTR标志。

有人可以通过示例解释:specific memory management algorithmwrap existing native application memory allocations的含义是什么。

1 个答案:

答案 0 :(得分:1)

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

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

在这种情况下,在创建OpenCL内存对象时,更容易使用CL_MEM_USE_HOST_PTR标志。所有对象处理都将在引擎盖下完成。这种方式可以为您节省很多痛苦,特别是当您使用在纯C上实现的大型项目时,内存对象处理总是很棘手。