繁体   English   中英

在Windows 8(x64)中安装期间PyOpenCL“致命错误:CL / cl.h:没有此类文件或目录”错误

[英]PyOpenCL “fatal error: CL/cl.h: No such file or directory” error during installation in Windows 8 (x64)

在仔细搜索了这个问题的解决方案之后,我发现Windows没有正确记录这个特定的错误。 所以我决定将此问题与解决方案一起发布。 对不起,如果我在错误的部分发布此内容。 我希望这个解决方案将来会帮助用户解决PyOpenCL安装错误。 请注意,此处使用的示例适用于支持AMD OpenCL SDK SDK的ATI Radeon GPUs 对于其他GPUs ,请参考各自的参数并根据需要实施。 如果安装失败,也不要尝试使用pip进行安装。 而是从这里下载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/includeCL文件夹并将其粘贴到一个单独的位置,例如您下载pyopencl.zip的目录。
  2. 同时复制C:/Program Files (x86)/AMD APP SDK/2.9-1/libx86_64文件夹,并将其粘贴到与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 = [] CL_INC_DIR = [r'(path to the new location of the CL folder)']并用CL_LIB_DIR = [r'(path to the new location of the x86_64 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 欢迎任何其他建议。

经过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( - > 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 Computing Toolkit \\ 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

>>>

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

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>

@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。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM