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

2024-03-17

在大量搜索此问题的解决方案后,我发现此特定错误尚未针对 Windows 正确记录。所以我决定将这个问题与解决方案一起发布。抱歉,如果我将其发布在错误的部分。我希望这个解决方案能够帮助用户解决未来 PyOpenCL 安装错误。请注意,此处使用的示例适用于ATI Radeon GPUs支持AMD OpenCL SDKSDK。对于他人GPUs,请参考各自的参数并根据需要执行。也不要尝试使用安装pip如果安装失败。相反,下载一个压缩副本pyopencl from here https://pypi.python.org/pypi/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 folder.
  3. 解压文件夹pyopencl.zip并前往(location of pyopencl)/src/wrapper
  4. 在 - 的里面wrapper文件夹,打开文件wrap_cl.hpp.
  5. 改变#include <CL/cl.h> to #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 = [] with CL_INC_DIR = [r'(path to the new location of the CL folder)']并替换CL_LIB_DIR = [] with CL_LIB_DIR = [r'(path to the new location of the x86_64 folder)'].
  10. 终于在cmd, run python setup.py install来自pyopencl目录并享受。

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


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

安装了 Catalyst 和最重要的 ATI Radeon 7970:安装了 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. Boost

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

在 pyopencl 目录中运行“python configure.py”以获取示例 siteconfig.py。

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

CL_INC_DIR = [r'C:\Program Files\NVIDIA GPU 计算工具包\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

>>>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何在python中附加两个字节?

    说你有b x04 and b x00 你如何将它们组合起来b x0400 使用Python 3 gt gt gt a b x04 gt gt gt b b x00 gt gt gt a b b x04 x00
  • 尝试从网页Python和BeautifulSoup获取编码

    我试图从网页检索字符集 这会一直改变 目前我使用 beautifulSoup 来解析页面 然后从标题中提取字符集 这工作正常 直到我遇到一个网站 到目前为止 我的代码以及与其他页面一起使用的代码是 def get encoding soup
  • 数据框 - 平均列

    我在 pandas 中有以下数据框 Column 1 Column 2 Column3 Column 4 2 2 2 4 1 2 2 3 我正在创建一个数据框 其中包含第 1 列和第 2 列 第 3 列和第 4 列等的平均值 ColumnA
  • 如何使用 Python boto3 获取 redshift 中的列名称

    我想使用 python boto3 获取 redshift 中的列名称 创建Redshift集群 将数据插入其中 配置的机密管理器 配置 SageMaker 笔记本 打开Jupyter Notebook写入以下代码 import boto3
  • python array(10,1) 和 array(10,) 之间的区别

    我正在尝试将 MNIST 数据集加载到数组中 当我使用 X train y train X test y test mnist load data 我得到一个数组 y test 10000 但我希望它的形状为 10000 1 数组 1000
  • 为什么第二个 request.session cookies 返回空?

    我想使用 requests Session post 登录网站 但是当我已经登录主页 然后进入帐户页面时 看来cookies还没有保存 因为cookies是空的 而且我无法进入正确的帐户页面 import requests from bs4
  • 将 pandas 剪切操作转换为常规字符串

    我明白了 pandas cut 操作的输出 0 0 20 1 0 20 2 0 20 3 0 20 4 0 20 5 0 20 6 0 20 7 0 20 8 0 20 9 0 20 如何将 0 20 转换为 0 20 我正在这样做 str
  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • NumPy 相当于 Keras 函数 utils.to_categorical

    我有一个使用 Keras 进行机器学习的 Python 脚本 我正在构建 X 和 Y 它们分别是特征和标签 标签的构建方式如下 def main depth 10 nclass 101 skip True output True video
  • App Engine 实体到字典

    将 google app engine 实体 在 python 中 复制到字典对象的好方法是什么 我正在使用 db Expando 对象 所有属性均为扩展属性 Thanks 有一个名为foo尝试 foo dict
  • 如何在 Seaborn 中的热图轴上表达类

    我使用 Seaborn 创建了一个非常简单的热图 显示相似性方阵 这是我使用的一行代码 sns heatmap sim mat linewidths 0 square True robust True sns plt show 这是我得到的
  • 将字符串中的随机字符转换为大写

    我尝试随机附加文本字符串 这样就不只是有像这样的输出 gt gt gt david 我最终会得到类似的东西 gt gt gt DaViD gt gt gt dAviD 我现在的代码是这样的 import random import stri
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • iteritems 的优点是什么?

    我使用的是 Python 2 7 5 Mac OS X 10 9 3 具有 8GB 内存和 1 7GHz Core i5 我测试了如下的时间消耗 d i i 2 for i in xrange 10 7 3 WARNING it takes
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • numpy polyfit 中使用的权重值是多少以及拟合误差是多少

    我正在尝试对 numpy 中的某些数据进行线性拟合 Ex 其中 w 是该值的样本数 即对于点 x 0 y 0 我只有 1 个测量值 该测量值是2 2 但对于这一点 1 1 我有 2 个测量值 值为3 5 x np array 0 1 2 3
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • Jupyter Notebook:带有小部件的交互式绘图

    我正在尝试生成一个依赖于小部件的交互式绘图 我遇到的问题是 当我使用滑块更改参数时 会在前一个绘图之后完成一个新绘图 而我预计只有一个绘图会根据参数发生变化 Example from ipywidgets import interact i
  • Python 中的 Unix cat 函数 (cat * > merged.txt)? [复制]

    这个问题在这里已经有答案了 一旦建立了目录 有没有办法在Python中使用Unix中的cat函数或类似的函数 我想将 files 1 3 合并到 merged txt 我通常会在 Unix 中找到该目录 然后运行 cat gt merged

随机推荐