numba-dpex icon indicating copy to clipboard operation
numba-dpex copied to clipboard

tuple_setitem not supported?

Open DrTodd13 opened this issue 1 year ago • 0 comments

import dpnp
import numba_dpex
import numba
import numba.cpython.unsafe.tuple as UT

@numba_dpex.dpjit
def do_fill(A, sz, starts):
    for i in numba.pndindex(sz):
        arg = sz
        # Construct the global index...yes I know this is dead code in this example but not the original larger example.
        for j in range(len(starts)):
            arg = UT.tuple_setitem(arg, j, i[j] + starts[j])
        A[i] = 1

A = dpnp.ones((100,100))
do_fill(A, (100,100), (0,0))
print("DONE")

Traceback (most recent call last): File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/errors.py", line 823, in new_error_context yield File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 265, in lower_block self.lower_inst(inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 439, in lower_inst val = self.lower_assign(ty, inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 626, in lower_assign return self.lower_expr(ty, value) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 1162, in lower_expr res = self.lower_call(resty, expr) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 891, in lower_call res = self._lower_call_normal(fnty, expr, signature) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 1125, in _lower_call_normal impl = self.context.get_function(fnty, signature) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/base.py", line 559, in get_function return self.get_function(fn, sig, _firstcall=False) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/base.py", line 561, in get_function raise NotImplementedError("No definition for lowering %s%s" % (key, sig)) NotImplementedError: No definition for lowering <function tuple_setitem..codegen at 0x7f0d0cf4b700>(UniTuple(int64 x 2), int64, int64) -> UniTuple(int64 x 2)

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/lowerer.py", line 1389, in lower self.gpu_lower.lower() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 168, in lower self.lower_normal_function(self.fndesc) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 222, in lower_normal_function entry_block_tail = self.lower_function_body() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 251, in lower_function_body self.lower_block(block) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 265, in lower_block self.lower_inst(inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/contextlib.py", line 137, in exit self.gen.throw(typ, value, traceback) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/errors.py", line 837, in new_error_context raise newerr.with_traceback(tb)

numba.core.errors.LoweringError: ^[[1m^[[1mNo definition for lowering <function tuple_setitem..codegen at 0x7f0d0cf4b700>(UniTuple(int64 x 2), int64, int64) -> UniTuple(int64 x 2) ^[[1m File "../../../../../tmp/t2.py", line 16:^[[0m ^[[1mdef do_fill(A, sz, starts): for j in range(len(starts)): ^[[1m arg = UT.tuple_setitem(arg, j, i[j] + starts[j]) ^[[0m ^[[1m^^[[0m^[[0m ^[[0m ^[[0m^[[1mDuring: lowering "arg.1 = call $38load_method.4(arg.2.2, $j.21, $56binary_add.13, func=$38load_method.4, args=[Var(arg.2.2, t2.py:15), Var($j.21, t2.py:15), Var($56binary_add.13, t2.py:16)], kws=(), vararg=None, varkwarg=None, target=None)" at /tmp/t2.py (16)^[[0m

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/errors.py", line 823, in new_error_context yield File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 265, in lower_block self.lower_inst(inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 439, in lower_inst val = self.lower_assign(ty, inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 626, in lower_assign return self.lower_expr(ty, value) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 1162, in lower_expr res = self.lower_call(resty, expr) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 891, in lower_call res = self._lower_call_normal(fnty, expr, signature) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 1125, in _lower_call_normal impl = self.context.get_function(fnty, signature) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/base.py", line 559, in get_function return self.get_function(fn, sig, _firstcall=False) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/base.py", line 561, in get_function raise NotImplementedError("No definition for lowering %s%s" % (key, sig)) NotImplementedError: No definition for lowering <function get_global_id at 0x7f0d5c35fca0>(uint32,) -> int64

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/parfor_lowering_pass.py", line 206, in _lower_parfor_as_kernel psrfor_kernel = create_kernel_for_parfor( File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/utils/kernel_builder.py", line 438, in create_kernel_for_parfor sycl_kernel = _compile_kernel_parfor( File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/utils/kernel_builder.py", line 75, in _compile_kernel_parfor kernel.compile( File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/kernel_interface/spirv_kernel.py", line 123, in compile cres = compile_with_dpex( File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 35, in _acquire_compile_lock return func(*args, **kwargs) File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/compiler.py", line 80, in compile_with_dpex cres = compiler.compile_ir( File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 779, in compile_ir return pipeline.compile_ir(func_ir=func_ir, lifted=lifted, File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 462, in compile_ir return self._compile_ir() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 527, in _compile_ir return self._compile_core() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 499, in _compile_core raise e File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 486, in _compile_core pm.run(self.state) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 368, in run raise patched_exception File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 356, in run self._runPass(idx, pass_inst, state) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 35, in _acquire_compile_lock return func(*args, **kwargs) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 311, in _runPass mutated |= check(pss.run_pass, internal_state) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 273, in check mangled = func(compiler_state) File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/passes.py", line 436, in run_pass lower.lower() File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/lowerer.py", line 1426, in lower self.cpu_lower.lower() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 168, in lower self.lower_normal_function(self.fndesc) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 222, in lower_normal_function entry_block_tail = self.lower_function_body() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 251, in lower_function_body self.lower_block(block) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 265, in lower_block self.lower_inst(inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/contextlib.py", line 137, in exit self.gen.throw(typ, value, traceback) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/errors.py", line 837, in new_error_context raise newerr.with_traceback(tb) numba.core.errors.LoweringError: Failed in dpex_offload_nopython mode pipeline (step: Custom Lowerer with auto-offload support) ^[[1m^[[1mNo definition for lowering <function get_global_id at 0x7f0d5c35fca0>(uint32,) -> int64 ^[[1m File "", line 2:^[[0m ^[[1m<source missing, REPL/exec in use?>^[[0m ^[[0m ^[[0m^[[1mDuring: lowering "parfor__index_16 = call $4load_method.1.35($const6.2.36, func=$4load_method.1.35, args=[Var($const6.2.36, :2)], kws=(), vararg=None, varkwarg=None, target=None)" at (2)^[[0m

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/errors.py", line 823, in new_error_context yield File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 265, in lower_block self.lower_inst(inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 567, in lower_inst func(self, inst) File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/parfor_lowering_pass.py", line 269, in lower_parfor_dpex parfor.lowerer(lowerer, parfor) File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/parfor_lowering_pass.py", line 218, in _lower_parfor_as_kernel raise UnsupportedParforError numba_dpex.core.exceptions.UnsupportedParforError: Expression cannot be offloaded

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/tmp/t2.py", line 22, in do_fill(A, (100,100), (0,0)) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/dispatcher.py", line 487, in _compile_for_args raise e File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/dispatcher.py", line 420, in _compile_for_args return_val = self.compile(tuple(argtypes)) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/dispatcher.py", line 965, in compile cres = self._compiler.compile(args, return_type) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/dispatcher.py", line 125, in compile status, retval = self._compile_cached(args, return_type) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/dispatcher.py", line 139, in _compile_cached retval = self._compile_core(args, return_type) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/dispatcher.py", line 152, in _compile_core cres = compiler.compile_extra(self.targetdescr.typing_context, cres = compiler.compile_extra(self.targetdescr.typing_context, File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 716, in compile_extra return pipeline.compile_extra(func) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 452, in compile_extra return self._compile_bytecode() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 520, in _compile_bytecode return self._compile_core() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 499, in _compile_core raise e File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler.py", line 486, in _compile_core pm.run(self.state) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 368, in run raise patched_exception File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 356, in run self._runPass(idx, pass_inst, state) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 35, in _acquire_compile_lock return func(*args, **kwargs) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 311, in _runPass mutated |= check(pss.run_pass, internal_state) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 273, in check mangled = func(compiler_state) File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/parfor_lowering_pass.py", line 372, in run_pass lower.lower() File "/localdisk/work/taanders/github/numba-dpex/numba_dpex/core/passes/parfor_lowering_pass.py", line 310, in lower self.dpex_lower.lower() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 168, in lower self.lower_normal_function(self.fndesc) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 222, in lower_normal_function entry_block_tail = self.lower_function_body() File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 251, in lower_function_body self.lower_block(block) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/lowering.py", line 265, in lower_block self.lower_inst(inst) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/contextlib.py", line 137, in exit self.gen.throw(typ, value, traceback) File "/localdisk/work/taanders/miniconda3/envs/dppl39/lib/python3.9/site-packages/numba/core/errors.py", line 837, in new_error_context raise newerr.with_traceback(tb) numba.core.errors.LoweringError: Failed in dpex_dpjit_nopython mode pipeline (step: Custom lowerer for dpex parfor nodes) ^[[1m^[[1mExpression cannot be offloaded ^[[1m File "../../../../../tmp/t2.py", line 12:^[[0m ^[[1mdef do_fill(A, sz, starts): ^[[1m for i in numba.pndindex(sz): ^[[0m ^[[1m^^[[0m^[[0m ^[[0m ^[[0m^[[1mDuring: lowering "id=0[LoopNest(index_variable = parfor_index.16, range = (0, sz_size0.3, 1)), LoopNest(index_variable = parfor_index.17, range = (0, sz_size1.4, 1))]{64: <ir.Block at /tmp/t2.py (19)>, 32: <ir.Block at /tmp/t2.py (15)>, 34: <ir.Block at /tmp/t2.py (15)>, 14: <ir.Block at /tmp/t2.py (12)>}Var($parfor_index_tuple_var.18, t2.py:12)" at /tmp/t2.py (12)^[[0m

DrTodd13 avatar Apr 05 '23 21:04 DrTodd13