我正在尝试使用英特尔硬件在Linux上使用OpenCL:
我有3个选项:
我在两个主要平台上测试了Beignet 1.2.1 OpenCL:
我还比较了它在Windows OpenCL GPU实现上运行相同的代码 - 它运行得更快。
我注意到内核使用本地内存进行相当标准和简单的缩减时所发现的更大差异 - 它会显着降低性能(我在某处读取使用全局内存作为本地模拟的beignet OpenCL)
问题:
答案 0 :(得分:2)
最近英特尔将其驱动程序以开源形式发布:
https://01.org/compute-runtime
我在Ubuntu 16.04上遵循了此构建说明(运行make install而不是使用deb文件除外)
https://github.com/intel/compute-runtime/blob/master/documentation/BUILD_Ubuntu.md
我让驱动程序正常工作。
性能要好得多
不需要自定义内核补丁
答案 1 :(得分:1)
差不多1年前,我遇到了类似的困境--Beignet或英特尔OpenCL驱动程序 - 我最终选择了英特尔驱动程序。
我也是先从Beignet开始,但我没能成功安装它。 但是,英特尔OpenCL的安装在Ubuntu 14.04和16.04上运行良好。
Ubuntu 14.04需要内核修补,但16.04工作没有,即使手册说它是必需的。我认为只要您的Linux发行版内核与OpenCL驱动程序所需的内核匹配并且您不需要某些需要修补的功能,您就可以不进行内核修补。我认为一些OpenCL 2.0功能需要修补,我使用的是OpenCL 1.2。 在Ubuntu 16.04上,默认内核版本是4.4,它与OpenCL驱动程序所需的内核版本相匹配 - 特别是intel-opencl-2.0-2.0-54425驱动程序版本。如果需要,您可以下载here。
否则the latest one目前需要内核4.7。如果您使用的Linux发行版是在4.7上,那么它可以在没有修补的情况下工作。
我还测试了Ubuntu vs Windows,但我没有注意到任何性能差异。我在Ubuntu 16.04上使用54425驱动程序进行OpenCL开发超过半年,我没有看到任何问题。