Итак, я пытаюсь запустить программу, используя 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, но это не должно означать, что он вообще не будет работать, верно?