clCreateBuffer:CL_MEM_COPY_HOST_PTR,CL_MEM_ALLOC_HOST_PTR

时间:2014-12-19 23:26:01

标签: opencl

在Khronos文件中,' clCreateBuffer'据说

  1. CL_MEM_COPY_HOST_PTR如果指定,则表示应用程序希望OpenCL实现为内存对象分配内存并从host_ptr引用的内存中复制数据。

  2. " CL_MEM_COPY_HOST_PTR可与CL_MEM_ALLOC_HOST_PTR一起使用,以初始化使用主机可访问(例如PCIe)存储器分配的cl_mem对象的内容。 "

  3. 分配内存并在更新之前复制其内容的含义是什么?它与PCIe示例有什么关系?

1 个答案:

答案 0 :(得分:1)

CL_MEM_ALLOC_HOST_PTR是通常用于指示CL对象在主机内存中具有副本(或驻留)的标志。 通常称为固定内存,并允许非常快速的复制操作。 在某些具有共享内存模型的平台上,这表明内存在CPU和GPU之间共享。 (不需要任何IO额外操作)

但是,该标志分配的内存是一个特殊的内存区域,因此未初始化。这就是为什么你可以选择使用CL_MEM_COPY_HOST_PTR表示你想用你在指针中传递的内容(host_ptr)来初始化缓冲区

cl_mem clCreateBuffer (     cl_context context,
    cl_mem_flags flags,
    size_t size,
    void *host_ptr, //<- Here
    cl_int *errcode_ret)

该标志相当于正常分配+ clEnqueueWriteBuffer()