使用CUDA工具包OpenCL SDK开发时,我能否通过OpenCL针对CPU进行编程?

3
我是一个GPGPU概念的新手,过去几个月我一直在缓慢地学习CUDA和OPENCL之间的区别。我意识到OpenCL规范允许程序员针对计算设备(无论是GPU/CPU架构)进行编程,但是CUDA C方法没有这种抽象,因为它总是针对兼容的Nvidia GPU架构。所以我想知道,如果我使用Nvidia在CUDA环境中的实现编写OPENCL内核,我是否仍然可以针对CPU进行编程?据我所知,AMD Stream环境允许您使用其OpenCL实现来完成此操作。

提前感谢。

2个回答

3

如果您需要的是在安装了基于Nvidia GPU的OpenCL的系统上针对CPU进行目标设置,则仍然可以这样做。 Nvidia的OpenCL实现仅支持Nvidia GPU,但AMD的实现支持CPU,可以与NVidia并行安装。

类似于OpenGL,在Linux和Windows上,OpenCL使用包装器库来委托多个实现之间的交互。


2
NVIDIA OpenCL、ATI OpenCL和AMD OpenCL(CPU)只是同一API的三种不同实现方式:OpenCL。这意味着只要您在OpenCL中编码并遵循规范,您的可执行文件应该可以在支持OpenCL的任何平台/硬件上正常运行,无论是GPU还是CPU。
在您的情况下,使用CUDA sdk开发NVIDIA OpenCL不会妨碍您在其他环境(如AMD Stream或Power上的OpenCL等)上运行您的应用程序,只要目标平台安装了符合OpenCL标准的驱动程序即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接