clCreateImage2D(...,void * hst_ptr,..)如何使用它?

时间:2014-06-14 18:16:26

标签: c++ opencl

我在官方网站上阅读了正式定义,但我仍然不明白:什么是void * hst-ptr用于?例如here。为什么缓冲区在这里如此有用,为什么buffer是指向char的指针,大小为4 * width * height

1 个答案:

答案 0 :(得分:1)

指定任一标志host_ptrCL_MEM_USE_HOST_PTR时使用

CL_MEM_COPY_HOST_PTR。在这些情况下,host_ptr指向包含要使用或复制的映像的CPU内存。

在您链接到的示例代码中,buffer是要复制到设备端(GPU typ。)映像的主机端(CPU内存)映像(因为它们使用CL_MEM_COPY_HOST_PTR标志)。

由于他们使用memcpy来填充它,因此它们使它成为指向char的指针并不重要,但它有助于使用new char进行分配,因为char是1个字节大小

4 * width * height是因为这是所需的总字节数(字符数)。

  1. 4是一个CL_RGBA CL_UNORM_INT8像素的大小(R,G,B,A都是一个字节)。
  2. width * height因为这是像素总数。
  3. 代码为图像分配主机端内存,用某些内容填充,然后使用这些字节创建设备端图像,然后使用内核处理它,然后将字节复制回主机端图像