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

clCreateImage2D (..., void* hst_ptr,..) how to use it?

本文关键字:ptr 何使用 hst void clCreateImage2D      更新时间:2023-10-16

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

host_ptr用于指定标志CL_MEM_USE_HOST_PTRCL_MEM_COPY_HOST_PTR中的一个。在这些情况下,host_ptr指向包含要使用或复制的映像的CPU内存。

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

这并不重要,因为他们使用memcpy来填充它,但它有助于使用new char分配,因为char是1字节的大小。

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

  1. 4是一个CL_RGBA CL_UNORM_INT8像素的大小(R, G, B, A各为一个字节)。
  2. width * height,因为这是像素总数。

代码为一个映像分配主机端内存,用一些东西填充它,然后使用这些字节创建一个设备端映像,然后使用内核处理它,然后将字节复制回主机端映像。