opencl(5)缓存对象
//创建的内存对象由内核访问,将缓冲区作为参数传递给内核
1:创建缓存对象
cl_mem clCreateBuffer(
cl_context context, //上下文
cl_mem_flags flags, //内存对象性质标签
size_t size, //大小
void* host_ptr, //主机地址
cl_int *errcode_ret //错误码
)
性质标签:
CL_MEM_READ_WRITE 指定内核对象将由内核读写
CL_MEM_WRITE_ONLY 指定内核对象只由内核写
CL_MEM_READ_ONLY 指定内核对象只由内核读
CL_MEM_ALLOC_HOST_PTR 指定缓冲区应当在宿主机可访问的内存中分配,不能与下一个性质一起用
CL_MEM_USE_HOST_PTR 实现使用host_ptr引用的内存作为内存对象的存储位
CL_MEM_COPY_HOST_PTR 实现分配内存对象的内存,并从hst_ptr引用的内存复制数据,不能和上一个性质一起使用。可以和CL_MEM_ALLOC_HOST_PTR,初始化这些对象的内容。且host_ptr不为NULL
2:创建子缓存对象
cl_mem clCreateSubBuffer(
cl_mem buffer, //缓存对象
cl_mem_flags flags, //性质对象
cl_buffer_create_type buffer_create_type,//CL_BUFFER_CREATE_TYPE_ORGIN
const void* buffer_create_info, //缓存创建信息数据
cl_int* errcode_ret //错误代码
)
缓存创建信息结构数据:(buffer_create_info)
typedef struct _cl_buffer_region{
size_t origin;
size_t size;
}cl_buffer_region;
3:获取缓存对象相关信息
cl_int clGetMemObjectInfo(
cl_mem memobj, //缓存对象
cl_mem_info param_name, //信息类型名称
size_t param_value_size, //要获取相关信息的大小
void* param_value, //存放缓存信息的地址
size_t param_value_size_ret //实际获得信息的大小
)