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  //实际获得信息的大小

)

原文地址:https://www.cnblogs.com/pengtangtang/p/PengTangTang_OpenCL_numberfour.html