运行this sample code时收到错误CL_DEVICE_NOT_AVAILABLE
。但是,与那个问题不同,我的CPU,Intel Core 2 Duo E8500 CPU似乎是supported。我确保链接到英特尔版本的OpenCL库,因为我也安装了Nvidia库。为什么会出现此错误?
答案 0 :(得分:4)
英特尔OpenCL SDK 2013需要SSE 4.2。据我所知(here),英特尔酷睿2双核E8500 CPU只有SSE 4.1
“CL_DEVICE_NOT_AVAILABLE”是您尝试在不受支持的CPU上创建OpenCL设备时遇到的错误。
对您而言,好消息是英特尔OpenCL SDK 2012适用于SSE 4.1;您应该卸载2013 SDK并使用2012 SDK(或获取更新的CPU)。
答案 1 :(得分:3)
“CL_DEVICE_NOT_AVAILABLE”与SDK无关。这是由于OpenCL设备驱动程序是视频卡设备驱动程序的一部分。
将SDK和OpenCL设备驱动程序混淆是很常见的。您使用SDK开发主机代码,但内核已编译并通过设备驱动程序运行。我经常使用英特尔SDK开发,但我使用英特尔视频驱动程序或AMD Radeon驱动程序在CPU上运行内核,使用Nvidia视频驱动程序(GTX590)在GPU上运行内核。我在Windows中安装了所有三个视频驱动程序。您不必使用AMD视频卡来安装Radeon驱动程序。
因此,在您的情况下,您可以使用AMD驱动程序在CPU上运行内核。它们比英特尔的限制性要小得多。
在Windows上,我使用英特尔OpenCL驱动程序在AMD Sandy Bridge CPU上运行内核的速度更快。但是,在Linux上,AMD驱动程序在英特尔CPU上的运行速度比英特尔驱动程序快。
答案 2 :(得分:0)
我在创建有关如何在Ubuntu 18.04上安装hashcat的教程时遇到了此错误;我已包含以下有关为英特尔®处理器安装OpenCL™运行时的说明-选项A(推荐)-请随时阅读我的full gist on GitHub。希望有帮助!
sudo lscpu
来检查您的CPU系统处理器体系结构,以识别CPU的类别,例如“ Intel(R)Core(TM)i7-7700 CPU @ 3.60Ghz”-或者,您可以转至Settings(设置)> Details(详细信息),该信息还将显示CPU系列(例如Intel(R)HD Graphics 630(Kaby Lake GT2)) 。cd ~/Desktop
mkdir neo
cd neo
sudo wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-gmmlib_18.4.0.348_amd64.deb
wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-igc-core_18.44.1060_amd64.deb
wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-igc-opencl_18.44.1060_amd64.deb
wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-opencl_18.46.11837_amd64.deb
sudo dpkg -i *.deb
安装软件包。sudo reboot
重新启动系统。cd ~/Downloads
sudo tar -xzf l_opencl_p_18.1.0.013.tgz
来解压缩tgz文件-请注意,自此版本开始,OpenCL文件的版本可能已更新(即,自此版本开始,版本为18.1.0.013。)cd l_opencl_p_18.1.0.013
sudo ./install.sh