clCreateImage2D (. ., void* hst_ptr,.)如何使用
clCreateImage2D (..., void* hst_ptr,..) how to use it?
我在官方网站上阅读了正式定义,但我仍然不明白:void* hst-ptr用于什么?比如这里。为什么buffer在这里这么有用,为什么buffer是一个指向char的指针,大小是4*width*height
host_ptr
用于指定标志CL_MEM_USE_HOST_PTR
或CL_MEM_COPY_HOST_PTR
中的一个。在这些情况下,host_ptr
指向包含要使用或复制的映像的CPU内存。
在您链接到的示例代码中,buffer
是主机端(CPU内存)映像被复制到设备端(GPU类型)映像(因为它们使用CL_MEM_COPY_HOST_PTR
标志)。
这并不重要,因为他们使用memcpy
来填充它,但它有助于使用new char
分配,因为char是1字节的大小。
4 * width * height
是因为这是所需的总字节数(字符数)。
-
4
是一个CL_RGBA CL_UNORM_INT8像素的大小(R, G, B, A各为一个字节)。 -
width * height
,因为这是像素总数。
代码为一个映像分配主机端内存,用一些东西填充它,然后使用这些字节创建一个设备端映像,然后使用内核处理它,然后将字节复制回主机端映像。
相关文章:
- 如何使用非类型参数传递模板化类的 Ref 或 Ptr
- C++:使用 shared_ptr<...> 而不是原始 ptr
- 使用 void 指针:void **ptr.. 如何修改共享内存的值?
- 如何使用 epoll(void* event.data.ptr) 管理 Connection 的生命周期
- C++14 unique_ptr并使用已删除的函数'std::unique-ptr' unique_ptr错误
- 使用std :: String ptr的错误打印std :: String
- 使用 LLVM 的 libc++ 时,__1 符号从何而来?
- 当使用运算符 new 更改为其他内存的指向已分配内存的 ptr 时会发生什么
- 在std::cout之后使用std::cin时,换行符从何而来
- 同时在 epoll 数据结构中使用 void *ptr 和 int fd
- 为什么以及在何处在C++中使用引用和指针
- 使用boost lambda构造创建初始化的智能ptr的容器
- 使用 Image.ptr<double>(0);在 OpenCV 中使用彩色图像
- 正确使用std智能指针以确保ptr安全
- 使用auto_ptr时,*ptr 和 *ptr.get() 有什么区别
- 在 std::map 的值中使用非 ptr 是一种很好的做法吗
- 基例如何影响使用递归函数的哪些行
- 为什么不使用空自动PTR不会终止程序?
- 使用ptr-to-ptr数组
- 共享 PTR - C++ 如何使用引用计数管理对象缓存