在NVIDIA硬件上运行OpenCL程序

在NVIDIA硬件上运行OpenCL程序,opencl,gpgpu,gpu,Opencl,Gpgpu,Gpu,我构建了一个简单的基于OpenCL的程序(用C++编写),并使用AMD FirePro V4900卡在Windows8系统上进行了测试。我使用的是AMD应用程序SDK 当我将二进制文件复制到另一台机器(带有NVIDIA Quadro 4000卡的Windows 8)时,我得到 “在动态链接库(我的程序的exe)中找不到过程入口点clReleaseDevice。”。第二台机器安装了最新的NVIDIA驱动程序和CUDA 5 关于如何使其与NVIDIA硬件配合使用,有什么想法吗?这是OpenCL 1.

我构建了一个简单的基于OpenCL的程序(用C++编写),并使用AMD FirePro V4900卡在Windows8系统上进行了测试。我使用的是AMD应用程序SDK

当我将二进制文件复制到另一台机器(带有NVIDIA Quadro 4000卡的Windows 8)时,我得到 “在动态链接库(我的程序的exe)中找不到过程入口点clReleaseDevice。”。第二台机器安装了最新的NVIDIA驱动程序和CUDA 5


关于如何使其与NVIDIA硬件配合使用,有什么想法吗?

这是OpenCL 1.1与1.2版本的问题。Nvidia仍在OpenCL 1.1版上。您已经使用了AMD的OpenCL1.2。在英伟达和OpenCL应用程序上,两个系统都需要删除CelExaseEngice API调用和使用1.1版本选项的AMD SDK重新编译。< / P>我不相信这与CUDA有任何关系,所以我删除了这个标签。至少,我会检查Nvidia OpenCL开发者站点,2)下载英伟达SDK,3)确保所有必要的NVidia.dll都已从SDK安装到目标计算机:。AMD最近似乎对他们对NVidia硬件的支持有些马虎:)为什么AMD应该支持NVidia硬件?Nvidia的责任是正确地为自己的硬件实现OpenCL规范,据我所知,英伟达OpenCL实现是一个薄型包装器,它被转换成引擎盖下的CUDA代码,因此它应该主要工作。我猜您使用的是OpenCL 1.1实现(clReleaseDevice仅在OpenCL 1.2下存在),因此如果NVidia不支持OpenCL 1.2,您将陷入困境。谢谢Thomas,这看起来像是我的问题。我使用最新的AMD SDK,因此OpenCL 1.2和英伟达卡,我试图运行在只支持OpenCL 1.1。你知道如何为OpenCL 1.1构建吗?我能想到的唯一解决方案是重写代码,而不使用1.2功能(如设备裂变、图像阵列等),这些功能可能可行,也可能不可行,具体取决于你的应用程序。英伟达OpenCL的支持一直都很缺乏,遗憾的是,在他们着手解决之前,你无能为力。你可以在CUDA中重写这个东西,但是你失去了在AMD硬件下运行它的能力。基本上,竞争利基标准是最糟糕的。