OpenCL 1.0 Specification阅读笔记(3)

本文是OpenCL 1.0规范的阅读笔记,聚焦于内存对象的两个核心概念:buffer对象和image对象。buffer对象适用于一维数据,如标量、向量和用户自定义结构,其内存布局显式,支持读写操作。image对象则用于二维或三维纹理和帧缓冲,其格式隐式,不能直接通过指针访问。clCreateBuffer和clCreateImage2D分别用于创建buffer和image,不同的cl_mem_flag选项控制内存分配方式。读写buffer的操作需通过命令队列异步执行,如clEnqueueReadBuffer和clEnqueueWriteBuffer,并可利用事件等待列表实现同步控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5. The OpenCL Runtime

 

5.2 Memory Objects

 

(1) buffer objects: 1-dim: scalar, vector, user-defined structure

(2) image objects: 2-dims or 3-dims texture, frame buffer and image: image format

 

memory object的元素至少为1

 

buffer的结构是显式的,指针访问,类型一致;image的结构是隐式的,不能用指针访问,类型可以隐式转换

 

 

cl_mem_flag:

read_write/read_only/write_only buffer,

(1) use_host_ptr: mapping device memory ptr or pcie memory ptr to host ptr

(2) copy_host_ptr: allocate memory on device or pcie and then copy host_ptr's content to

(3) alloc_host_ptr: allocate memory on host memory

 

read/write buffer command should be enqueued into command queue

(1) clEnqueueReadBuffer

(2) clEnqueueWriteBuffer

(3) clEnqueueCopyBuffer

概念:

(1) blocking or non-blocking: 同步读写或异步读写的问题,当异步时,使用event来query是否完成

(2) event_wait_list and num_event_in_wait_list: 当列表中的事件都完成时,才可执行读(写)操作

 

clRetainMemObject

clReleaseMemObject

 

注意:image中每个元素的字节数是2的平方数

 

clCreateImage3D与clCreateImage2D差不多

 

而Image Format Descriptor结构分成两部分:

(1) image_channel_order: channel数和Layout,即memory layout

(2) image_channel_data_type: channel数据类型的大小

 

to be continued .....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值