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

Posted

技术标签:

【中文标题】Linux Arch OpenCL ICD 加载器 - Nvidia GPU、Intel CPU【英文标题】:Linux Arch OpenCL ICD Loader - Nvidia GPU, Intel CPU 【发布时间】:2014-08-03 02:06:27 【问题描述】:

我正在尝试同时在我的 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 英伟达 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 intel-opencl-sdk 2014R1-2 opencl-icd 1.2.11.0-4

两个平台(英特尔、英伟达)在 /etc/OpenCL/Vendors 中都有 .icd 文件。所以我不知道我可以尝试什么最终让英特尔 CPU OpenCL 平台得到认可。也许你有一些想法?

【问题讨论】:

【参考方案1】:

目前,最好卸载这两个软件包(intel-opencl-sdk 和 intel-opencl-runtime)并从 community repository 安装 beignet。

sudo pacman -S --needed beignet

该软件包提供相同的功能,并允许您使用 Intel GPU 内核。

在支持 Optimus 的 ASUS G750JM 上进行了测试,我可以确认它可以与其他 OpenCL 平台(例如 NVIDIA 提供的平台)很好地共存。目前通过 bbswitch 切换并通过 PRIME 和 primus 卸载 GL 渲染。

一些管道 (pyrit) 可以在两个平台上同时使用 OpenCL,从而显着提升性能。

【讨论】:

【参考方案2】:

我发现了一个名为“intel-opencl-runtime”的附加包。 intel-opencl-sdk 包含 icd 文件,但它似乎不足以在英特尔平台上运行 OpenCL 应用程序。为了能够使用英特尔平台运行 OpenCL,还需要安装上述运行时包。

【讨论】:

以上是关于Linux Arch OpenCL ICD 加载器 - Nvidia GPU、Intel CPU的主要内容,如果未能解决你的问题,请参考以下文章

Failed to load OpenCL runtime 解决

如何让 OpenCl 看到 intel 和 nvidia 设备?

ARCH Linux pacman 包管理器出错总结

Filecoin系列 - golang实现版本Louts

OpenCL中的popcnt?

OpenCL:如何使用 C++ 包装器检查构建错误