Linux Arch OpenCL ICD 加载器 - Nvidia GPU、Intel CPU

标签 linux opencl intel nvidia

我尝试在 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/

相关文章:

linux - 将标准输出中的数字插入标准输出中的字符串

c++ - 将未知大小的多维数组传递给函数

c - OpenCL 全局屏障工作项同步

assembly - 为什么从AT&T切换到Intel语法会使本教程使用GAS出现段错误?

linux - 英特尔 Linux 的起源

linux - 将自己添加回 Ubuntu 12.04 中的 sudoers 文件

Linux环境变量

linux - Shell 脚本将每行中的值分开并将其放入两个变量中

c++ - OpenCL - 我的数组怎么会太大而导致堆栈溢出?

performance - 为什么 L2 硬件预取器在只有 1 KiB 或 2 KiB 访问大小时性能较差?