clGetMemObjectInfo有时返回false结果[OpenCL]

时间:2014-02-06 20:01:31

标签: c++ parallel-processing opencl

我有一台笔记本电脑( Intel i5 CPU Intel HD 4000 GPU 集成)和 NVIDIA GT653M 作为独立GPU。

我使用CPU作为主机,使用HD 4000 GPU作为设备。两者都适用于OpenCL 1.2

Q1:现在当我使用clGetMemObjectInfo()函数获取包装数组的内存缓冲区的主机指针(CL_MEM_HOST_PTR)时,有时函数会正确地返回指针它返回0.我的代码很简单,我想知道为什么会发生这种情况?

Q2:我可以将CPU配置为同时用作主机和设备吗?

2 个答案:

答案 0 :(得分:0)

  1. 检查您是否使用CL_MEM_USE_HOST_PTR分配标志创建了cl_mem,否则您对主机指针的查询没有意义。另外,检查clGetMemObjectInfo()的返回码以获取特定的错误代码。

  2. CPU& GPU是OpenCL设备,可用于构建程序,运行内核等。所以是的,你可以为shure做这件事。

答案 1 :(得分:0)

1- khronos 在OpenCL 1.2 clCreateSubBuffer()功能文档中指定

  

CL_MEM_USE_HOST_PTRCL_MEM_ALLOC_HOST_PTR和   CL_MEM_COPY_HOST_PTR值不能在flags中指定,但是   继承自相关的内存访问限定符   用缓冲区。'

在OpenCL 1.0中并非如此。所以我修改它,它工作正常。

2-我确实以错误的方式理解了架构,谢谢。