我正在尝试使用创建 subBuffer 来读取从一维向量创建的缓冲区块。这是我正在使用的代码:
d_treeArray = clCreateBuffer(context, CL_MEM_READ_WRITE, sizeof(cl_uint)*total,NULL,&err);
cl_buffer_region region;
region.origin = 0; // This works
//region.origin = 4; // This doesnt work
region.size = 10*sizeof(cl_uint);
d_subtreeArray = clCreateSubBuffer(d_treeArray,CL_MEM_READ_WRITE,CL_BUFFER_CREATE_TYPE_REGION, ®ion, &err);
if(err != CL_SUCCESS) {
std::cout << "Cannot set buffers" << std::endl;
exit(1);
}
现在,当我将 region.origin 指定为 0 以外的任何值时,我得到 -13 错误(CL_INVALID_VALUE),根据帮助,这意味着区域原点和大小超出了缓冲区的范围。这可能是什么原因?