3

我是 GPGPU 概念的新手,在过去的几个月里,我一直在慢慢地自学 CUDA 和 OPENCL 之间的区别。我意识到 OpenCL 规范允许程序员以计算设备为目标(因此无论 GPU/CPU 架构如何),但 CUDA C 方法没有这样的抽象,因为它始终以兼容的 Nvidia GPU 架构为目标。所以我想知道如果我在 CUDA 环境中使用 Nvidia 的实现编写一个 OPENCL 内核,我还能以 CPU 为目标吗?据我了解,AMD Stream 环境允许您通过他们的 OpenCL 实现来做到这一点。

提前致谢。

4

2 回答 2

3

如果您的意思是这样,您仍然可以在安装了 Nvidia 基于 GPU 的 OpenCL 的系统上以 CPU 为目标。Nvidia 的 OpenCL 实现仅支持 Nvidia GPU,但 AMD 的实现(可以与 NVidia 一起安装)也支持 CPU。

与 OpenGL 类似,OpenCL(在 Linux 和 Windows 上)使用包装库在多个实现之间进行委托。

于 2010-11-14T14:32:44.480 回答
2

NVIDIA OpenCL、ATI OpenCL、AMD OpenCL (CPU) 只是同一 API 的三种不同实现:OpenCL。这意味着只要您在 OpenCL 中编码并遵守规范,您的可执行文件就应该在任何支持 OpenCL 的平台/硬件上正常运行,无论是 GPU 还是 CPU。

在您的情况下,只要目标平台安装了符合 OpenCL 的驱动程序,使用 CUDA sdk 使用 NVIDIA OpenCL 进行开发不应妨碍您在 AMD Stream 或其他环境(例如OpenCL on Power )上运行您的应用程序。

于 2010-11-14T12:45:26.977 回答