gpgpu - 在混合供应商的硬件上运行 OpenCL

标签 gpgpu opencl

我一直在他们的 Stream 2.0 测试版中使用 ATI OpenCL 实现。当前测试版中的 OpenCL 目前仅使用 CPU,下一个版本应该支持 GPU 内核。我下载了 Stream,因为我的工作机器中有一个 ATI GPU。

我编写的软件将从使用 GPU 的 yield 中获益匪浅。然而,这个软件在客户机器上运行,我没有奢侈(就像许多科学计算环境那样)选择要开发的确切硬件,并为此进行优化。所以我的问题是,如果我将 ATI OpenCL 实现与我的应用程序一起分发,是否意味着它永远无法使用,例如英伟达显卡?如果我使用 NVidia OpenCL SDK,它永远不会在 AMD 芯片上以最佳方式运行(考虑到 ATI/AMD 链接)?

换言之,到底谁负责提供 OpenCL 实现?用户是否能够例如为他们的 NVidia 显卡安装 OpenCL“驱动程序”,同时安装一个“驱动程序”,为他们的 AMD CPU 提供最佳性能?

顺便说一句,除了 Khronos 留言板之外,是否有任何好的/活跃的 OpenCL 支持论坛,或者这是要去的地方?我看到 ATI 有一块板子,而 NVidia 大概有自己的板子,OpenCL 用户/开发者社区在哪里?已经合并到一个地方了吗?

最佳答案

最终,OpenCL 的工作方式将与 OpenGL 相同。也就是说,用户将安装来自其硬件供应商(ATI、NVIDIA、Intel)的当前驱动程序。作为开发人员,您在构建应用程序时只需链接 OpenCL 库。当用户运行您的应用程序时,该应用程序将重定向到驱动程序提供的相应供应商特定库。

这是它将工作的方式,但它尚未以这种方式工作。

要记住的另一件重要事情是,您可能仍然需要提供供应商特定的代码路径,因为使用 OpenCL 在 CPU 上运行的代码可能会使用与在 GPU 上运行的代码不同的优化内核参数。 GPU 供应商之间的差异可能也是如此。

关于gpgpu - 在混合供应商的硬件上运行 OpenCL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388371/

相关文章:

opencl - 根据 OpenCL 中的设备内存确定最大全局工作组大小?

opencl - 可以跨越 OpenCL 内核在 CPU 和 GPU 上同时运行

c++ - 在 C++Amp 中使用指针

c - 使用 CMake 安装附加文件

algorithm - CUDA 粒子中的最近邻

opencl - 在 OpenCL 中使用 128 位或 256 位无符号整数?

java - OpenCL 库和绑定(bind)

不同场景下的CUDA原子操作性能

c++ - 使用 C++ AMP 时未命中 GPU 断点

cuda - 节省 cudaHostAlloc 所需的时间