在大量搜索此问题的解决方案之后,我发现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
编译器识别,你可以做的是:
CL
内的C:/Program Files (x86)/AMD APP SDK/2.9-1/include
文件夹并将其粘贴到单独的位置,例如您已下载的目录pyopencl.zip
。x86_64
内的C:/Program Files (x86)/AMD APP SDK/2.9-1/lib
文件夹,并将其粘贴到与CL
文件夹相同的目录中。pyopencl.zip
并转到(location of pyopencl)/src/wrapper
wrapper
文件夹中,打开文件wrap_cl.hpp
。#include <CL/cl.h>
更改为#include <cl.h>
CL
并打开文件cl_platform.h
。再一次重复步骤5. cl_ext.h
文件夹中的CL
文件并将其打开。再次重复步骤5。cmd
模式下的admin
窗口内,转到pyopencl
目录并运行命令python configure.py
。这将生成一个siteconf.py
文件,其中包含一些安装参数。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)']
。cmd
中,从python setup.py install
目录运行pyopencl
并享受。希望此解决方案可以帮助您在Windows 8(x64)中安装PyOpenCL
。欢迎任何其他建议。
答案 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。 希望这会有所帮助。