PyOpenCL"致命错误:CL / cl.h:没有这样的文件或目录"在Windows 8(x64)中安装期间出错

时间:2015-02-17 18:46:21

标签: python windows python-2.7 opencl pyopencl

在大量搜索此问题的解决方案之后,我发现Windows没有正确记录此特定错误。所以我决定将此问题与解决方案一起发布。对不起,如果我在错误的部分发布此内容。我希望这个解决方案将来会帮助用户解决PyOpenCL安装错误。请注意,此处使用的示例适用于支持ATI Radeon GPUs SDK的AMD OpenCL SDK。对于其他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. 复制CL内的C:/Program Files (x86)/AMD APP SDK/2.9-1/include文件夹并将其粘贴到单独的位置,例如您已下载的目录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_ext.h文件夹中的CL文件并将其打开。再次重复步骤5。
  8. cmd模式下的admin窗口内,转到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中,从python setup.py install目录运行pyopencl并享受。
  11. 希望此解决方案可以帮助您在Windows 8(x64)中安装PyOpenCL。欢迎任何其他建议。

3 个答案:

答案 0 :(得分:1)

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

ATI Radeon 7970已安装Catalyst且大部分已导入:安装的AMD APP SDK(2.9.1)

在开始使用PyOpenCL之前安装的软件:

1。 Python 2.7.9(x86)

2。 Numpy(x86)

3。 pywin32

4。 Visual Studio 2008

5。 Mako( - &gt; easy_install Mako)

6。升压

根据我的说法,最重要的一步是获取SITECONF.py文件。为拿到它,为实现它:

运行&#34; python configure.py&#34;在pyopencl目录中获取示例siteconfig.py。

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

CL_INC_DIR = [r&#39; C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.1 \ include&#39;]

CL_LIB_DIR = [r&#39; C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.1 \ lib \ x64&#39;]

所以,我的siteconf.py文件:

yourView.translatesAutoresizingMaskIntoConstraints = YES;

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

&GT;&GT;&GT;将pyopencl导入为cl

&GT;&GT;&GT;

答案 1 :(得分:1)

在进行了上述更改之后,执行时:

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>

答案 2 :(得分:0)

@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。 希望这会有所帮助。