我有一台笔记本电脑( 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配置为同时用作主机和设备吗?
答案 0 :(得分:0)
检查您是否使用CL_MEM_USE_HOST_PTR分配标志创建了cl_mem,否则您对主机指针的查询没有意义。另外,检查clGetMemObjectInfo()的返回码以获取特定的错误代码。
CPU& GPU是OpenCL设备,可用于构建程序,运行内核等。所以是的,你可以为shure做这件事。
答案 1 :(得分:0)
1- khronos 在OpenCL 1.2 clCreateSubBuffer()
功能文档中指定
CL_MEM_USE_HOST_PTR
,CL_MEM_ALLOC_HOST_PTR
和CL_MEM_COPY_HOST_PTR
值不能在flags中指定,但是 继承自相关的内存访问限定符 用缓冲区。'
在OpenCL 1.0中并非如此。所以我修改它,它工作正常。
2-我确实以错误的方式理解了架构,谢谢。