【问题标题】:CL_DEVICE_NOT_AVAILABLE using Intel Core 2 Duo E8500 CPUCL_DEVICE_NOT_AVAILABLE 使用 Intel Core 2 Duo E8500 CPU
【发布时间】:2013-08-14 03:19:00
【问题描述】:

运行this sample code 时出现错误CL_DEVICE_NOT_AVAILABLE。然而,与那个问题不同的是,我的 CPU,Intel Core 2 Duo E8500 CPU,似乎是supported。我已经确保链接到 OpenCL 库的 Intel 版本,因为我还安装了 Nvidia 库。为什么会出现这个错误?

【问题讨论】:

  • 您是否尝试过用于 Intel 芯片的 AMD 的 OpenCL 平台?我一直能够将 AMD 平台与 Intel 处理器一起使用,也许这会起作用?如果没有,您是否遇到同样的错误?
  • @Austin 我还没有,因为我认为 Visual Studio 的 CodeXL / CodeXL Plugin 不支持在 Intel CPU 上调试,因为它不支持在 Nvidia GPU 上调试。你知道 AMD 是否支持在 Intel CPU 上调试吗?
  • 我没有,抱歉。我以其他方式进行调试。如果 AMD 平台报告相同的错误会很有趣。
  • @Austin 还有什么方法?到目前为止我发现的最简单的方法是将缓冲区传递到内核并在内核返回后在 CPU 端打印或调试它。
  • 我为 LabVIEW (OpenCLV) 编写了一个插件,让我可以非常轻松地可视化内容。用这种方式调试我的内核非常容易。

标签: opencl intel


【解决方案1】:

我在创建关于如何在 Ubuntu 18.04 上安装 hashcat 的教程时遇到了这个错误;我已包含以下有关为英特尔® 处理器安装 OpenCL™ 运行时的说明 - 选项 A(推荐)- 请随时查看我的 full gist on GitHub。希望对您有所帮助!

为英特尔® 处理器安装 OpenCL™ 运行时

为英特尔® 处理器安装 OpenCL™ 运行时 - 选项 A(推荐)

  1. 通过运行sudo lscpu 来检查您的 CPU 系统处理器架构,以识别 CPU 的类别,例如“Intel (R) Core (TM) i7-7700 CPU @ 3.60Ghz”- 或者,您可以转到设置 > 详细信息,这也将显示 CPU 系列(例如 Intel (R) HD Graphics 630 (Kaby Lake GT2)) .
  2. 转到Intel Developer Zone 并向下滚动到您系统的相应下载链接;假设您正在运行 Ubuntu 18.04 并拥有 Intel Core 级 CPU,向下滚动到“Linux* OS Ubuntu* 16.04.x (deb)”并单击 Github link for 18.46.11837 Runtimes 以访问运行时包以进行下载。李>
  3. 上述 Github 存储库中应该有说明,或者您可以在接下来的步骤中继续以下操作。
  4. cd ~/Desktop
  5. mkdir neo
  6. cd neo
  7. sudo wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-gmmlib_18.4.0.348_amd64.deb
  8. wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-igc-core_18.44.1060_amd64.deb
  9. wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-igc-opencl_18.44.1060_amd64.deb
  10. wget https://github.com/intel/compute-runtime/releases/download/18.46.11837/intel-opencl_18.46.11837_amd64.deb
  11. 通过运行sudo dpkg -i *.deb 安装包。
  12. 运行sudo reboot重启系统。

为英特尔® 处理器安装 OpenCL™ 运行时 - 选项 B

  1. 转到 Intel OpenCL Runtimes website 并向下滚动到页面底部以下载 Intel CPU Runtime for OpenCL Applications 18.1 for LINUX OS(仅限 64 位)。
  2. 下载英特尔处理器的 OpenCL 运行时后,cd ~/Downloads
  3. 运行sudo tar -xzf l_opencl_p_18.1.0.013.tgz 解压tgz 文件-请注意,OpenCL 文件版本可能会自本要点起更新(即本要点时,版本为18.1.0.013。)
  4. cd l_opencl_p_18.1.0.013
  5. 运行sudo ./install.sh
  6. 将提示欢迎屏幕 - 按住“Enter”键直到能够输入“我不同意收集我的信息”选择“2”
  7. 点击“1”
  8. 点击“1”
  9. 点击“Enter”,然后重新启动计算机。
  10. 如果在测试 hashcat 后遇到任何其他英特尔 OpenCL 错误,请转到“为英特尔® 处理器安装 OpenCL™ 运行时 - B”部分 - 如果没有,请继续“测试 Hashcat”部分

【讨论】:

    【解决方案2】:

    “CL_DEVICE_NOT_AVAILABLE”与 SDK 无关。这是由于 OpenCL 设备驱动程序是显卡设备驱动程序的一部分。

    将 SDK 和 OpenCL 设备驱动程序混淆是很常见的。您使用 SDK 开发主机代码,但内核是通过设备驱动程序编译和运行的。我经常使用英特尔 SDK 进行开发,但我使用英特尔视频驱动程序或 AMD Radeon 驱动程序在 CPU 上运行我的内核,并使用 Nvidia 视频驱动程序 (GTX590) 在 GPU 上运行我的内核。我在 Windows 中安装了所有三个视频驱动程序。安装 Radeon 驱动程序无需 AMD 显卡。

    因此,在您的情况下,您可以使用 AMD 驱动程序在 CPU 上运行您的内核。它们比英特尔的限制要少得多。

    在 Windows 上,使用 Intel OpenCL 驱动程序在 Sandy Bridge CPU 上运行内核比 AMD 获得更快的结果。但是,在 Linux 上,AMD 驱动程序在我的 Intel CPU 上运行我的内核比 Intel 驱动程序更快。

    【讨论】:

    • 我从AMD APP SDK 安装了 AMD APP CPU SDK Runtime,但 AMD 没有显示为平台,只有 Nvidia,而且我的 Intel CPU 没有显示为设备。我可能做错了什么?
    • 我的意思是安装 AMD 视频驱动程序。 OpenCL 通过您的视频驱动程序运行。 Intel 的视频驱动程序不支持您的 CPU 用于 OpenCL。
    • 我也尝试安装AMD Catalyst Display Driver,但 AMD Catalyst 安装管理器甚至没有提供安装显示驱动程序的选项。
    • 奇怪。它为我安装在 Windows 上,我有一个 Intel CPU 和一个 Nvidia GPU。我将它安装在几个没有 AMD 产品的系统上。我已经好几个月没有使用它了。也许他们现在改变了它,因此它需要 AMD CPU 或 GPU?这不足为奇。
    • @1'',我刚刚注意到英特尔的 OpenCL SDK page 声明“SDK 还支持 CPU 上的 OpenCL 与旧版本的英特尔®酷睿™处理器(包括第一代和第二代) 。在这些平台上,只有 CPU 可用的 OpenCL 运行时。(下载 here"。你有一个第一代核心处理器。也许这会有所帮助。
    【解决方案3】:

    英特尔 OpenCL SDK 2013 需要 SSE 4.2。据我所知 (here) Intel Core 2 Duo E8500 CPU 只有 SSE 4.1

    “CL_DEVICE_NOT_AVAILABLE”是您尝试在不受支持的 CPU 上创建 OpenCL 设备时遇到的错误。

    对您来说好消息是英特尔 OpenCL SDK 2012 在 SSE 4.1 上运行;您应该卸载 2013 SDK 并改用 2012 SDK(或获取更新的 CPU)。

    【讨论】:

    • 对,我的链接是 2012 发行说明。感谢您的澄清!不幸的是,2012 版本不支持 OpenCL 1.2,所以没有 printf 和其他好东西。
    • @1'' 您可以安装 AMD Radeon 视频驱动程序(即使您没有 AMD 视频卡)并使用 AMD 驱动程序在 CPU 上运行内核。它也支持 OpenCL 1.2。您的 SDK 不是问题。
    • @redrum 非常感谢,我现在可以在我的旧 Intel CPU 上运行 OpenCL,甚至可以使用 printf()
    • @1'',很高兴我能帮上忙 :-) 你最后做了什么让它工作?
    • @redrum 我只需要安装 AMD 驱动程序并重新启动几次,它就会显示为 OpenCL 平台。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2016-06-21
    • 2013-03-08
    • 2015-11-27
    相关资源
    最近更新 更多