如何创建 NVIDIA OpenCL 项目

Posted

技术标签:

【中文标题】如何创建 NVIDIA OpenCL 项目【英文标题】:How to create NVIDIA OpenCL project 【发布时间】:2019-11-13 10:34:54 【问题描述】:

我想在 Visual Studio 2017 的 NVIDIA OpenCL 中编写应用程序,但不知道如何为此目的创建项目。

我有来自 NVIDIA (GeForce 940M) 和 Intel (HD Graphics 5500) 的 GPU,并且已经设法打开和运行用于 OpenCL 的 Intel 示例程序,但它们有将近一千行代码,所以我决定尝试 NVIDIA OpenCL 但不要不知道怎么做。在一些论坛上,他们说我应该下载 CUDA 工具包并安装 OpenCL,其他人说我应该下载支持 OpenCL 的驱动程序,但我不知道哪个驱动程序合适。我已经从https://www.nvidia.pl/Download/index.aspx?lang=pl 安装了 CUDA 和驱动程序,但我仍然无法在 Visual Studio 的 OpenCL 中创建 NVIDIA 项目。

【问题讨论】:

下载 CUDA 套件可能是最不让人头疼的事情。我相信它仍然带有 OpenCL 的标头,尽管我可能弄错了。 我在 NVIDIA GPU COMPUTING\include\CL 目录中找到了标题。我应该如何处理它们才能在 Visual Studio 中创建 OpenCL 项目?我想#include "CL\cl.h" 是不够的。 我认为对于 CUDA,最好不要直接通过 OpenCL,而是使用他们在工具包中提供的细节。当然,它只适用于 Nvidia GPU。如果你想支持 Intel GPU 或 AMD,你应该只专注于使用 OpenCL。如果您只想要 OpenCL:medium.com/@pratikone/… 否则,请遵循 CUDA 的文档 我按照您的教程进行操作并得到错误:无法打开文件,,OpenCL.lib''。此外,我不确定教程中的第 3 步(3. 使用新解决方案平台进行项目配置)。我不知道我应该选择什么选项。教程说“选择 x64 作为新平台并将设置选项复制为 Win32”,但图像上有 ARM。 【参考方案1】:

OpenCL 运行时已包含在 Nvidia 图形驱动程序中。您只需要 OpenCL C++ 头文件、OpenCL.lib 文件,在 Linux 上还需要 libOpenCL.so 文件。这些随 CUDA 工具包一起提供,但无需安装它即可获得 9 个必要的文件。

以下是 CUDA 工具包 10.1 中的 OpenCL C++ 头文件和 lib 文件: https://github.com/ProjectPhysX/OpenCL-Wrapper/tree/master/src/OpenCL

下载OpenCL 文件夹并将其复制到您的项目源文件夹中。 然后在您的 Visual Studio 项目中,转到“项目属性 -> C/C++ -> 常规 -> 附加包含目录”并添加 C:\path\to\your\project\src\OpenCL\include。然后,在“项目属性 -> 链接器 -> 所有选项 -> 附加依赖项”中添加 OpenCL.lib; 并在“项目属性 -> 链接器 -> 所有选项 -> 附加库目录”中添加 C:\path\to\your\project\src\OpenCL\lib

最后,在您的.cpp 源文件中,包含带有#include <CL/cl.hpp> 的标题。

这也适用于 AMD/Intel GPU 和 CPU。如果您使用以下代码编译,它也可以在 Linux 上运行:

g++ *.cpp -o Test.exe -I./OpenCL/include -L./OpenCL/lib -lOpenCL

为了轻松开始使用 OpenCL,我创建了一个包装器,它极大地简化了 OpenCL C++ 绑定并消除了随之而来的整个代码开销。这包括 OpenCL 头文件和所有 Visual Studio 项目设置;无需额外设置: https://github.com/ProjectPhysX/OpenCL-Wrapper

【讨论】:

哈!我在无法取消的大规模 CUDA 安装过程中发现了这一点!这就是我想要的。有没有好人将这些所需文件托管在某个地方,以便我们获得最新版本? Nvidia 多年来没有更改 OpenCL 头文件。无论如何,他们的 GPU 仅支持 OpenCL 1.2,因此您可以使用 10.1 中的文件。要检查他们是否更改了某些内容,您可以下载 CUDA 工具包并打开安装程序,以便将安装文件解压缩到某个指定的文件位置。查找文件夹,其中某处有 OpenCL 文件。将它们复制到其他地方后,取消安装,然后将再次删除提取的文件夹。 到了不让你取消的阶段

以上是关于如何创建 NVIDIA OpenCL 项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Nvidia GPU 上调试 OpenCL?

使用 Visual Studio 2010 在 Nvidia GEFORCE 上的 OpenCL 代码

如何“告诉”CMake 3.9+ 我想使用 NVIDIA 的 OpenCL 库?

Nvidia 和 AMD 硬件上的 OpenCL FFT?

OpenCL 内核在 Nvidia GPU 上每个线程使用多少寄存器?

NVIDIA OpenCL 设备版本