【问题标题】:PyOpenCL fails to build program on MacOS MojavePyOpenCL 无法在 MacOS Mojave 上构建程序
【发布时间】:2018-10-26 19:36:41
【问题描述】:

所以我正在尝试使用silx.image.sift 运行一个程序,该程序使用pyopencl。在运行该软件时,我在构建 openCL 程序时遇到了问题,我已将该程序隔离到以下重现该错误的代码:

import numpy as np
import pyopencl as cl
from pyopencl.clrandom import rand as clrand


context = cl.create_some_context()
queue = cl.CommandQueue(context)
clrand(queue, (50,), np.float32)

由于此代码尽可能基本,我猜这是(遗憾的是)最近安装的 macOS Mojave 的一个错误。这是我在运行使用pyopencl 的代码时经常遇到的错误:

 File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyopencl/clrandom.py",
  line 642, in _fill
    self.get_gen_kernel(ary.dtype, distribution)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pytools/__init__.py",
   line 598, in wrapper
    result = function(obj, *args, **kwargs)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyopencl/clrandom.py",
  line 623, in get_gen_kernel
    prg = cl.Program(self.context, src).build()
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyopencl/__init__.py",
   line 510, in build
    options_bytes=options_bytes, source=self._source)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyopencl/__init__.py",
   line 554, in _build_and_catch_errors
    raise err
pyopencl._cl.RuntimeError: clBuildProgram failed: BUILD_PROGRAM_FAILURE - clBuildProgram failed: BUILD_PROGRAM_FAILURE -
   clBuildProgram failed: BUILD_PROGRAM_FAILURE

Build on <pyopencl.Device 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz' on 'Apple' at 0xffffffff>:

不确定这是 pyopencl 问题还是一般的 opencl 问题。我了解 OpenCL 在 macOS mojave 中已被弃用,但这不应该意味着它根本无法正常工作?

【问题讨论】:

  • 在安装了带有brew install python 的python3 (3.7.0) 和带有pip3 install numpy pybind11 pyopencl 的pyopencl 之后,您的代码适用于我在带有MacOS Mojave 的iMac 上。
  • 对于它的价值,在 10.12.6 和 POCL 2018.1.1,我收到一些警告,例如,:17:19: warning: no previous prototype for function 'gen_bits' uint4 gen_bits(key_t *key, ctr_t *ctr)。 :66:32: 警告:不同符号整数的比较:'unsigned long' 和 'long' while (idx + 4

标签: python python-3.x opencl pyopencl macos-mojave


【解决方案1】:

根据 PyOpenCL 的开发人员的说法,这是 Mac OS 10.14 上的一个已知问题。早期版本显然不受影响。

解决方案是在终端中使用命令,在运行 python 或 jupyter notebook 之前:

export PYOPENCL_NO_CACHE=1

【讨论】:

    猜你喜欢
    • 2017-12-19
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2019-05-08
    相关资源
    最近更新 更多