Linux Arch OpenCL ICD Loader语言 - Nvidia GPU, Intel CPU



我试图同时在我的英特尔CPU和Nvidia GPU上运行我的OpenCL应用程序以实现负载平衡。但我有一个问题,只有Nvidia平台被检测到。

我使用这个cl.hpp调用:

std::vector<cl::Platform> m_platforms;
cl::Platform::get(&m_platforms);

系统设置:

    Linux Arch 3.14.6-1-ARCHIntel Haswell 4770K
  • 英伟达250 gts

安装包:

  • nvidia-libgl 337.25 - 1
  • opencl-nvidia 337.25 - 1
  • nvidia 337.25 - 1
  • nvidia-utils 337.25 - 1
  • 台面10.2.1-1
  • opencl-headers12
  • 2014年
  • intel-opencl-sdk r1-2
  • opencl-icd 1.2.11.0-4

两个平台(Intel, Nvidia)在/etc/opencl/vendor .中都有。icd文件所以我不知道我可以尝试什么,最终得到英特尔CPU OpenCL平台的认可。也许你有什么主意?

目前,最好卸载这两个包(intel-opencl-sdk和intel-opencl-runtime),并从社区存储库安装beignet。

sudo pacman -S --needed beignet

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

我可以确认它与其他OpenCL平台(如NVIDIA提供的)共存得很好,正如在具有optimus功能的华硕G750JM上测试的那样。目前通过bbswitch切换,通过PRIME和primus卸载gl渲染。

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

我发现了一个名为"intel-opencl-runtime"的附加包。Intel - openl -sdk包含icd文件,但它似乎不足以在Intel平台上运行OpenCL应用程序。为了能够在Intel平台上运行OpenCL,还需要安装上面提到的运行时包。

最新更新