OpenCL编程:获取缓存对象信息

函数clGetMemObjectInfo能返回关于图像对象和缓存对象这两种内存对象的信息。

其函数原型如下:

clGetMemObjectInfo(cl_mem object, cl_mem_info param_name, size_t param_value_size,

void *param_value, size_t *param_value_size_ret);

cl_mem_info可取以下值。

clGetMemObjectInfo(main_buffer, CL_MEM_SIZE, sizeof(main_buffer_size), &main_buffer_size, NULL);
clGetMemObjectInfo(sub_buffer, CL_MEM_SIZE, sizeof(sub_buffer_size), &sub_buffer_size, NULL);
printf("main_buffer_size        : %1u \n", main_buffer_size);
printf("sub_buffer_size          : %1u \n", sub_buffer_size);

clGetMemObjectInfo(main_buffer, CL_MEM_HOST_PTR, sizeof(main_buffer_mem), &main_buffer_mem, NULL);
clGetMemObjectInfo(sub_buffer, CL_MEM_HOST_PTR, sizeof(sub_buffer_mem), &sub_buffer_mem, NULL);
printf("main_buffer_mem address        : %p \n", main_buffer_mem);
printf("sub_buffer_mem address          : %p \n", sub_buffer_mem);
printf("main array address                    : %p \n", main_data);

clReleaseMemObject(main_buffer);
clReleaseMemObject(sub_buffer);

这里有一点让人非常疑惑,在调用clCreateBuffer时,不管标志位设置为CL_MEM_COPY_HOST_PTR还是CL_MEM_USE_HOST_PTR打印出来的设备内存地址都和主机端是一样的。

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/81224634