【问题标题】:PyOpenCL "fatal error: CL/cl.h: No such file or directory" error during installation in Windows 8 (x64)在 Windows 8 (x64) 中安装时出现 PyOpenCL“致命错误:CL/cl.h:没有这样的文件或目录”错误
【发布时间】:2015-04-18 13:58:37
【问题描述】:

在大量搜索此问题的解决方案后,我发现此特定错误尚未针对 Windows 正确记录。因此,我决定将此问题与解决方案一起发布。抱歉,如果我在错误的部分发布此内容。我希望这个解决方案能帮助用户在未来解决 PyOpenCL 安装错误。请注意,此处使用的示例适用于支持AMD OpenCL SDK SDK 的ATI Radeon GPUs。对于其他GPUs,请参考其各自的参数并根据需要实现。如果安装失败,也不要尝试使用pip 进行安装。而是从here 下载pyopencl 的压缩副本。

所以安装 PyOpenCL 时的错误信息是:

在 src/wrapper/wrap_cl.cpp:1:0:
中包含的文件中 src/wrapper/wrap_cl.hpp:27:19: 致命错误: CL/cl.h: 没有这样的文件或目录
错误:命令“gcc”失败,退出状态为 1

为了解决这个问题,必须知道默认的CL/cl.h通常存储在:C:/Program Files (x86)/.../include/CL。但由于 (x86) 无法被 gcc 编译器识别,您可以这样做:

  1. 复制C:/Program Files (x86)/AMD APP SDK/2.9-1/include内的CL文件夹,并将其粘贴到单独的位置,例如您下载pyopencl.zip的目录。
  2. 还将x86_64 文件夹复制到C:/Program Files (x86)/AMD APP SDK/2.9-1/lib 中,并将其粘贴到与CL 文件夹相同的目录中。
  3. 解压文件夹pyopencl.zip,进入(location of pyopencl)/src/wrapper
  4. wrapper 文件夹中,打开文件wrap_cl.hpp
  5. #include <CL/cl.h> 更改为#include <cl.h>
  6. 接下来转到您在第一步中复制的CL,打开文件cl_platform.h。再次重复第 5 步。
  7. 接下来在CL文件夹中找到cl_ext.h文件并打开它。再次重复第 5 步。
  8. admin模式下的cmd窗口中,进入pyopencl目录并运行命令python configure.py。这将生成一个siteconf.py 文件,其中包含一些安装参数。
  9. 打开siteconf.py文件,将CL_INC_DIR = []替换为CL_INC_DIR = [r'(path to the new location of the CL folder)'],将CL_LIB_DIR = []替换为CL_LIB_DIR = [r'(path to the new location of the x86_64 folder)']
  10. 最后在cmd 中,从pyopencl 目录运行python setup.py install 并享受。

希望此解决方案在 Windows 8 (x64) 中安装 PyOpenCL 时对您有所帮助。欢迎任何其他建议。

【问题讨论】:

    标签: python windows python-2.7 opencl pyopencl


    【解决方案1】:

    经过 2 天的尝试和错误,我成功了。 PyOpenCL 已安装。这是我的硬件:

    ATI Radeon 7970 已安装 Catalyst 和大多数导入:安装 AMD APP SDK (2.9.1)

    使用 PyOpenCL 之前安装的软件:

    1。 Python 2.7.9 (x86)

    2。麻木 (x86)

    3。 pywin32

    4。视觉工作室 2008

    5。 Mako ( -> easy_install Mako )

    6。提升

    在我看来,最重要的一步是正确获取 SITECONF.py 文件。为拿到它,为实现它:

    在pyopencl目录下运行“python configure.py”得到一个示例siteconfig.py。

    这是我修改后的文件。请注意,如果你想使用 nVidia,CL_INC_DIR = [] 和 CL_LIB_DIR = [] 会有所不同,可能看起来像这样:

    CL_INC_DIR = [r'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\include']

    CL_LIB_DIR = [r'C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v4.1\lib\x64']

    所以,我的 siteconf.py 文件:

      BOOST_INC_DIR = [r'C:\C++ Projects\boost_1_55_0']
      BOOST_LIB_DIR = [r'C:\C++ Projects\boost_1_55_0\stage\lib']
      BOOST_COMPILER = 'gcc43'
      BOOST_PYTHON_LIBNAME = ['boost_python']
      USE_SHIPPED_BOOST = True
      CL_TRACE = False
      CL_ENABLE_GL = True
      CL_ENABLE_DEVICE_FISSION = True
      CL_INC_DIR = [r'C:\Program Files (x86)\AMD APP SDK\2.9-1\include']
      CL_LIB_DIR = [r'C:\Program Files (x86)\AMD APP SDK\2.9-1\lib\x86_64']
      CL_LIBNAME = ['OpenCL']
      CXXFLAGS = ['/EHsc']
      LDFLAGS = ['/FORCE']
    

    您可以在网上找到许多示例,其中 Microsoft SDK 也放在 CL_INC_DIR = [] 和 CL_LIB_DIR = [] 中,但是我不打算在我的 i3 处理器上使用 OpenCL,因此没有使用 MS 构建 pyopencl文件。 我希望这可以帮到你!梦寐以求的结果:

    >>> 将 pyopencl 导入为 cl

    >>>

    【讨论】:

      【解决方案2】:

      以上修改后,执行时:

      python setup.py install
      

      我收到此错误:

      building 'pyopencl._cl' extension
      C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MT -DPYGPU_PACKAGE=pyopencl -DPYGPU_PYOPENCL=1 -DHAVE_GL=1 -IH:\pyopencl-2018.2\CL -Ipybind11/include -IC:\Users\James\Anaconda3\Include -IC:\Users\James\AppData\Roaming\Python\Python35\Include -IC:\Users\James\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\James\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\James\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\James\Anaconda3\include -IC:\Users\James\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\Include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\ATLMFC\Include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" /EHsc /Tpsrc/wrap_constants.cpp /Fobuild\temp.win-amd64-3.5\Release\src/wrap_constants.obj /EHsc /DVERSION_INFO=\"2018.2\"
      wrap_constants.cpp
      h:\pyopencl-2018.2\src\wrap_helpers.hpp(5): fatal error C1083: Cannot open include file: 'pybind11-2.2.4-py3.5.egg/pybind11.h': No such file or directory
      error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2
      

      我将 wrap_helpers.hpp 更改为什么路径:

      #include <pybind11.h>
      #include <operators.h>
      

      【讨论】:

        【解决方案3】:

        @James,我遇到了和你一样的问题。这是我为克服它所做的。

        1. run pip install pybind11
        2. add the "PythonInstallPath/include/pybind11" in the right place within 
          the wrap_helpers.hpp file.
        3. go back to pyopencl directory, and run pip setup.py install.
        

        最后,我得到了 pyopencl。 希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-27
          • 1970-01-01
          • 2013-11-27
          • 1970-01-01
          • 1970-01-01
          • 2022-12-05
          • 2018-10-25
          • 1970-01-01
          相关资源
          最近更新 更多