我尝试在 Intel CPU 和 Nvidia GPU 上同时运行 OpenCL 应用程序,以实现负载平衡。但我遇到的问题是仅检测到 Nvidia 平台。
我使用这个 cl.hpp 调用:
std::vector<cl::Platform> m_platforms;
cl::Platform::get(&m_platforms);
我的系统设置:
- Linux Arch 3.14.6-1-ARCH
- 英特尔 Haswell 4770K
- Nvidia 250GTS
已安装的软件包:
- nvidia-libgl 337.25-1
- opencl-nvidia 337.25-1
- 英伟达337.25-1
- nvidia-utils 337.25-1
- 台面10.2.1-1
- opencl-headers12
- 英特尔-opencl-sdk 2014R1-2
- opencl-icd 1.2.11.0-4
两个平台(Intel、Nvidia)在/etc/OpenCL/Vendors 中都有 .icd 文件。所以我不知道我可以尝试什么才能最终获得 Intel CPU OpenCL 平台的认可。也许你有一些想法?
最佳答案
目前,最好卸载这两个软件包(intel-opencl-sdk 和 intel-opencl-runtime)并从 community repository 安装 beignet .
sudo pacman -S --needed beignet
该软件包提供相同的功能,并允许您使用 Intel GPU 内核。
我可以确认它与其他 OpenCL 平台(例如 NVIDIA 提供的平台)可以很好地共存,这在支持 Optimus 的华硕 G750JM 上进行了测试。目前通过 bbswitch 进行切换,并通过 PRIME 和 primus 卸载 GL 渲染。
一些管道(pyrit)可以在两个平台上同时使用 OpenCL,从而显着提高性能。
关于Linux Arch OpenCL ICD 加载器 - Nvidia GPU、Intel CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189643/