ssec / sift

A visualization application for satellite imagery
http://sift.ssec.wisc.edu/
GNU General Public License v3.0
48 stars 14 forks source link

numba.jit decorator on uwsift/view/tile_calculator.get_reference_points : run_quicksort unsupported opcode #306

Open captcha1 opened 3 years ago

captcha1 commented 3 years ago

I upgraded to Fedora 33, which uses python 3.9, and I reinstalled numba 0.51.2 and uwsift 1.1.3. When I run SIFT, the numba.jit decorator on uwsift/view/tile_calculator.get_reference_points complains about numba/misc/quicksort.run_quicksort : unsupported opcode . Perhaps a numba bug, but I commented the decorator out and it SIFT works.

$ SIFT $PY/lib/python3.9/site-packages/uwsift/view/probes.py:22: MatplotlibDeprecationWarning: The matplotlib.backends.backend_qt4agg backend was deprecated in Matplotlib 3.3 and will be removed two minor releases later. from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas Traceback (most recent call last): File "$PY/bin/SIFT", line 33, in sys.exit(load_entry_point('uwsift==1.1.3', 'console_scripts', 'SIFT')()) File "$PY/bin/SIFT", line 25, in importlib_load_entry_point return next(matches).load() File "/usr/lib64/python3.9/importlib/metadata.py", line 77, in load module = import_module(match.group('module')) File "/usr/lib64/python3.9/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1030, in _gcd_import File "", line 1007, in _find_and_load File "", line 986, in _find_and_load_unlocked File "", line 680, in _load_unlocked File "", line 790, in exec_module File "", line 228, in _call_with_frames_removed File "$PY/lib/python3.9/site-packages/uwsift/main.py", line 54, in from uwsift.view.scene_graph import SceneGraphManager File "$PY/lib/python3.9/site-packages/uwsift/view/scene_graph.py", line 50, in from uwsift.view.visuals import (NEShapefileLines, TiledGeolocatedImage, RGBCompositeLayer, PrecomputedIsocurve) File "$PY/lib/python3.9/site-packages/uwsift/view/visuals.py", line 50, in from uwsift.view.tile_calculator import TileCalculator, calc_pixel_size, get_reference_points File "$PY/lib/python3.9/site-packages/uwsift/view/tile_calculator.py", line 39, in def get_reference_points(img_cmesh, img_vbox): File "$PY/lib/python3.9/site-packages/numba/core/decorators.py", line 218, in wrapper disp.compile(sig) File "$PY/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock return func(*args, kwargs) File "$PY/lib/python3.9/site-packages/numba/core/dispatcher.py", line 819, in compile cres = self._compiler.compile(args, return_type) File "$PY/lib/python3.9/site-packages/numba/core/dispatcher.py", line 82, in compile raise retval File "$PY/lib/python3.9/site-packages/numba/core/dispatcher.py", line 92, in _compile_cached retval = self._compile_core(args, return_type) File "$PY/lib/python3.9/site-packages/numba/core/dispatcher.py", line 105, in _compile_core cres = compiler.compile_extra(self.targetdescr.typing_context, File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 627, in compile_extra return pipeline.compile_extra(func) File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 363, in compile_extra return self._compile_bytecode() File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 425, in _compile_bytecode return self._compile_core() File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 405, in _compile_core raise e File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 396, in _compile_core pm.run(self.state) File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 341, in run raise patched_exception File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 332, in run self._runPass(idx, pass_inst, state) File "$PY/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock return func(*args, *kwargs) File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 291, in _runPass mutated |= check(pss.run_pass, internal_state) File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 264, in check mangled = func(compiler_state) File "$PY/lib/python3.9/site-packages/numba/core/typed_passes.py", line 442, in run_pass NativeLowering().run_pass(state) File "$PY/lib/python3.9/site-packages/numba/core/typed_passes.py", line 370, in run_pass lower.lower() File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 136, in lower self.lower_normal_function(self.fndesc) File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 190, in lower_normal_function entry_block_tail = self.lower_function_body() File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 216, in lower_function_body self.lower_block(block) File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 230, in lower_block self.lower_inst(inst) File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 327, in lower_inst val = self.lower_assign(ty, inst) File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 502, in lower_assign return self.lower_expr(ty, value) File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 1027, in lower_expr res = self.lower_call(resty, expr) File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 764, in lower_call res = self._lower_call_normal(fnty, expr, signature) File "$PY/lib/python3.9/site-packages/numba/core/lowering.py", line 998, in _lower_call_normal res = impl(self.builder, argvals, self.loc) File "$PY/lib/python3.9/site-packages/numba/core/base.py", line 1164, in call res = self._imp(self._context, builder, self._sig, args, loc=loc) File "$PY/lib/python3.9/site-packages/numba/core/base.py", line 1194, in wrapper return fn(args, kwargs) File "$PY/lib/python3.9/site-packages/numba/np/arrayobj.py", line 5036, in array_argsort return context.compile_internal(builder, array_argsort_impl, File "$PY/lib/python3.9/site-packages/numba/core/base.py", line 884, in compile_internal cres = self.compile_subroutine(builder, impl, sig, locals) File "$PY/lib/python3.9/site-packages/numba/core/base.py", line 869, in compile_subroutine cres = self._compile_subroutine_no_cache(builder, impl, sig, File "$PY/lib/python3.9/site-packages/numba/core/base.py", line 840, in _compile_subroutine_no_cache cres = compiler.compile_internal(self.typing_context, self, File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 701, in compile_internal return pipeline.compile_extra(func) File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 363, in compile_extra return self._compile_bytecode() File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 425, in _compile_bytecode return self._compile_core() File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 405, in _compile_core raise e File "$PY/lib/python3.9/site-packages/numba/core/compiler.py", line 396, in _compile_core pm.run(self.state) File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 341, in run raise patched_exception File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 332, in run self._runPass(idx, pass_inst, state) File "$PY/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock return func(*args, **kwargs) File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 291, in _runPass mutated |= check(pss.run_pass, internal_state) File "$PY/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 264, in check mangled = func(compiler_state) File "$PY/lib/python3.9/site-packages/numba/core/typed_passes.py", line 92, in run_pass typemap, return_type, calltypes = type_inference_stage( File "$PY/lib/python3.9/site-packages/numba/core/typed_passes.py", line 70, in type_inference_stage infer.propagate(raise_errors=raise_errors) File "$PY/lib/python3.9/site-packages/numba/core/typeinfer.py", line 1071, in propagate raise errors[0] numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython mode backend) Failed in nopython mode pipeline (step: nopython frontend) No implementation of function Function(<function make_quicksort_impl..run_quicksort at 0x7f5103ee90d0>) found for signature:

run_quicksort(array(float64, 1d, C))

There are 2 candidate implementations:

During: resolving callee type: Function(<function make_quicksort_impl..run_quicksort at 0x7f5103ee90d0>) During: typing of call at $PY/lib/python3.9/site-packages/numba/np/arrayobj.py (5032)

File "$PY/lib/python3.9/site-packages/numba/np/arrayobj.py", line 5032: def array_argsort_impl(arr): return sort_func(arr) ^

During: lowering "$22call_method.10 = call $20load_method.9(func=$20load_method.9, args=[], kws=(), vararg=None)" at $PY/lib/python3.9/site-packages/uwsift/view/tile_calculator.py (56)

djhoese commented 3 years ago

Thanks for the report. This definitely sounds like a numba issue. I'm not sure how else we could fix this if it works for other versions of python but not 3.9. Have you had any luck tracking a bug report down for numba for a bug like this?

captcha1 commented 3 years ago

Mmmm... I haven't looked at any numba bug reports. I just wanted to get SIFT working again.