我有一台配备 Ubuntu 10.10 和 Nvidia GTX 480 显卡的双 Xeon 机器,我想在 CPU 和 GPU 上使用 OpenCL。
我使用 apt-get 安装了最新的 Nvidia 驱动程序 (nvidia-current),并从 Nvidia 页面下载并安装了最新的 CUDA Toolkit (3.2)。
但这只允许我在 Nvidia GPU 而不是 CPU 上运行 OpenCL 代码。
然后我在互联网上阅读了一些文章,说 ATI SDK 能够在 CPU 上运行 OpenCL 代码。
我安装了最新版本的 ATI 驱动程序,然后尝试编译 SDK。
然后我可以在 CPU 上运行代码,但不能在 GPU 上运行。
有没有办法在 Nvidia GPU 和 Xeon CPU 上运行 OpenCL 代码?
Nvidia CUDA 和 ATI Stream OpenCL 实现都支持 Khronos ICD 扩展,所以当你调用 clGetPlatformIDs 时你会得到两个不同的平台,因此你可以在这些平台上查询 CPU/GPU 设备,当然 ATI 平台会返回 CPU设备和 Nvidia 平台将返回 GPU 设备。
然后您可以在这些设备上创建 CommandQueues 并启动您的内核。当然,这意味着在 GPU 和 CPU 之间共享任务并非易事,但至少在您的应用程序中有一个从 CPU 切换到 GPU 的按钮会很容易做到。