2014-02-06 50 views
0

我有一台笔记本电脑(英特尔I5 CPU英特尔HD 4000 GPU集成)和NVIDIA GT653M作为离散GPU。clGetMemObjectInfo返回false结果有时[OpenCL的]

我使用CPU作为主机,使用HD 4000 GPU作为设备。这两个工作在OpenCL 1.2

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

问题2:我可以配置CPU同时用作主机和设备吗?

回答

0

1- Khronos的指定的OpenCL 1.2在于

CL_MEM_USE_HOST_PTRCL_MEM_ALLOC_HOST_PTRCL_MEM_COPY_HOST_PTR值不能在标志指定,但是从相关联的相应的存储器访问限定符继承 clCreateSubBuffer()函数文档带缓冲区的 '。

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

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

+0

那么,你没有告诉你正在使用子缓冲区,它改变了事情。无论如何,这个问题很好解决了。 –

+0

我很抱歉 – OmarGW

0
  1. 检查您已经创建了cl_mem与CL_MEM_USE_HOST_PTR分配标志,否则你的查询主机的指针已经没有任何意义。此外,检查特定错误代码的clGetMemObjectInfo()的返回码。

  2. GPU & GPU是OpenCL设备,可以用来构建程序,运行内核等。所以是的,你可以为shure做到这一点。

+0

@ 1- ** ** Khronos的指定的OpenCL 1.2“clCreateSubBuffer()”功能说明文件_'The“CL_MEM_USE_HOST_PTR”,“CL_MEM_ALLOC_HOST_PTR”和CL_MEM_COPY_HOST_PTR值不能在标志指定,但由相应的存储器访问限定符被继承与缓冲区相关联。',OpenCL 1.0并不是这种情况。所以我修改它,它工作正常。 @ 2-我确实以错误的方式了解架构,谢谢。 – OmarGW

相关问题