如何从NVIDIA头文件访问cl名称空间? 对不起,如果这是一个NoOB问题,但我对C++是新的,我在用OpenCL解决问题的部分原因是学习更多的C++。p>

如何从NVIDIA头文件访问cl名称空间? 对不起,如果这是一个NoOB问题,但我对C++是新的,我在用OpenCL解决问题的部分原因是学习更多的C++。p>,opencl,Opencl,我安装了CUDA SDK,它将openCL头文件放在这里: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include\CL 我将以下两个目录添加到Visual C++中的其他include目录中: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\

我安装了CUDA SDK,它将openCL头文件放在这里:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include\CL
我将以下两个目录添加到Visual C++中的其他include目录中:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include\CL
但是当我尝试引用cl名称空间中的任何内容时,它都不起作用,因为cl是未定义的


这个问题已经解决了,所以我在这里只是想补充一些信息

使用英伟达CUDA SDK,而不是使用英特尔或AMD SDK(我更喜欢英特尔)。它们都自动包含cl.hpp并支持OpenCL 1.2(Nvidia SDK仅支持OpenCL 1.1)。您可能需要添加#define CL_USE_DEPRECATED_OPENCL_1_1_API以确保您的内核在Nvidia设备上工作

SDK与编译和运行内核的设备驱动程序无关。这是由供应商的视频驱动程序完成的。事实上,你可以安装英伟达视频驱动程序,AMD RADEON驱动程序(即使你没有AMD视频卡)和英特尔OpenCL驱动程序。然后你可以用英特尔OpenCL SDK编译你的主机代码,在Nvidia GPU和英特尔/AMD CPU上运行你的内核。

< P>问题是Nvidia的OpenCL框架(与CUDA捆绑)不符合C++包装库。但幸运的是,其中一个是使用现有OpenCLCAPI的单头库。因此,您只需从Khronos下载并将其包含在源文件中(将其放入可访问的include目录后,最好与nVidia自己的OpenCL头一起使用)。事实上,一旦包含并使用了
cl.hpp
,就不需要包含任何其他标题


<>但是注意,这个C++包装器只对OpenCL 1.1起作用(并且它不是最好的C++包装器,也可以是),但是Nvidia无论如何都没有OpenCL 1.2的支持。您是否有使用命名空间cl的
行?使用名称空间cl;给出错误“名称必须是命名空间”,我想你已经下载了C绑定,而不是C++。你从哪里弄来的?我没有安装CUDA SDK进行检查,但它们可能安装在其他地方。啊哈,下载这个,把它放在同一个文件夹中,并包含:如果CUDA有gl#U互操作,那么你可以使用gl空间,然后使用cl#gl互操作可以提供CUDA和opencl之间的链接。