代码之家  ›  专栏  ›  技术社区  ›  JoeVictor

pyopencl无法在macos mojave上构建程序

  •  0
  • JoeVictor  · 技术社区  · 6 年前

    所以我试着用 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的一个错误。下面是每当我运行使用 脓毒症 :

     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中已经被弃用了,但这不应该意味着它不会工作,好吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ru Chern Chong ABHINAV    6 年前

    据pyopencl的开发者说,这是mac os 10.14上的一个已知问题。早期版本显然不受影响。

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

    export PYOPENCL_NO_CACHE=1