Skip to content

Removing deprecated list of list in harmonic cache #143

@giacomomagni

Description

@giacomomagni

Explicit call of a function that has a list of list as input doesn't work with numba:

>>> import eko
>>> sx = eko.harmonics.compute_cache(3, 5,True)
>>> eko.anomalous_dimensions.as4.ggg.gamma_gg_nf0(3,sx)
/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/ir_utils.py:2152: NumbaPendingDeprecationWarning: 
Encountered the use of a type that is scheduled for deprecation: type 'reflected list' found for argument 'sx' of function 'gamma_gg_nf0'.

For more information visit https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-reflection-for-list-and-set-types

File "../eko/src/eko/anomalous_dimensions/as4/ggg.py", line 202:
@nb.njit(cache=True)
def gamma_gg_nf0(n, sx):
^

  warnings.warn(NumbaPendingDeprecationWarning(msg, loc=loc))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/dispatcher.py", line 487, in _compile_for_args
    raise e
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/dispatcher.py", line 420, in _compile_for_args
    return_val = self.compile(tuple(argtypes))
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/dispatcher.py", line 965, in compile
    cres = self._compiler.compile(args, return_type)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/dispatcher.py", line 125, in compile
    status, retval = self._compile_cached(args, return_type)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/dispatcher.py", line 139, in _compile_cached
    retval = self._compile_core(args, return_type)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/dispatcher.py", line 152, in _compile_core
    cres = compiler.compile_extra(self.targetdescr.typing_context,
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler.py", line 693, in compile_extra
    return pipeline.compile_extra(func)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler.py", line 429, in compile_extra
    return self._compile_bytecode()
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler.py", line 497, in _compile_bytecode
    return self._compile_core()
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler.py", line 476, in _compile_core
    raise e
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler.py", line 463, in _compile_core
    pm.run(self.state)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler_machinery.py", line 353, in run
    raise patched_exception
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler_machinery.py", line 341, in run
    self._runPass(idx, pass_inst, state)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler_lock.py", line 35, in _acquire_compile_lock
    return func(*args, **kwargs)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler_machinery.py", line 296, in _runPass
    mutated |= check(pss.run_pass, internal_state)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/compiler_machinery.py", line 269, in check
    mangled = func(compiler_state)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/typed_passes.py", line 396, in run_pass
    lower.create_cpython_wrapper(flags.release_gil)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/lowering.py", line 305, in create_cpython_wrapper
    self.context.create_cpython_wrapper(self.library, self.fndesc,
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/cpu.py", line 183, in create_cpython_wrapper
    builder.build()
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/callwrapper.py", line 123, in build
    self.build_wrapper(api, builder, closure, args, kws)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/callwrapper.py", line 156, in build_wrapper
    val = cleanup_manager.add_arg(builder.load(obj), ty)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/callwrapper.py", line 59, in add_arg
    cleanup_arg()
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/callwrapper.py", line 41, in cleanup_arg
    self.api.reflect_native_value(ty, native.value, self.env_manager)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/pythonapi.py", line 1431, in reflect_native_value
    impl(typ, val, c)
  File "/project/theorie/gmagni/miniconda3/envs/n3lo_fit/lib/python3.10/site-packages/numba/core/boxing.py", line 755, in reflect_list
    raise TypeError(msg)
TypeError: Failed in nopython mode pipeline (step: native lowering)
cannot reflect element of reflected container: reflected list(reflected list(complex128)<iv=None>)<iv=None>

Possible solution is to promote the cache to be a regular numpy.ndarray adding some zeros. A bit cleaner but more complex would be to pass a dictionary.
Note that calling functions that don't need compute_cache as input works fine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions