Skip to content
esc edited this page Oct 20, 2022 · 1 revision

Numba Meeting: 2022-10-18

Attendees: Siu Kwan Lam, Val, Andre Masella, Da Li, Guilherme, Sebastian Berg, stuart, Todd A. Anderson, brandon willard, Ianna Osborne, Shannon Quinn, Graham Markall, Luk FPOC (last week): @guilhermeleobas

NOTE: All communication is subject to the Numba Code of Conduct.

Please refer to this calendar for the next meeting date.

0. Discussion

  • discussed in triage:
    • NumPy PR #22422 ENH: Expose ufunc.resolve_dtypes and strided loop access
      • API is pretty much what we need
      • Numba will not be able to use the strides because it's not in the typesystem
      • TODO:
        • build out for testing
        • more numba devs should review
      • casting loops have more control; e.g. alignment. May not matter to Numba since LLVM will do loop peeling for vectorized loops
    • Refactoring with @overload that hits CPU and CUDA
      • Currently replacing lower_builtin with @overload but for some functions both CPU and CUDA share typing but have different implementations
      • Need to make sure that any refactoring in this areas takes care of ensuring there's a consistent @overload for both targets (use target= kwarg).
    • distutils/setuptools (again)
      • distuils goes away in py3.12, so need to do something by then
      • can move to distutils vendored in setuptools.
      • issue is open RE pycc and setuptools to gether feedback.
  • #8517 - make some typedlist C-APIs public
    • Developing a Numba extension, has some C++ code and needs to use typed.List C-API (which is currenly in helperlib DSO and private).
    • Request is to make the types.List API functions public conditional on it not causing issues else where in Numba.
    • If the symbols are made public it hints towwards a commitment to support these APIs (which are essentially implementation details).
    • Possible ways to resolve this:
      • to accept the PR as-is but note that they are implementation details (document this instability/lack of guarantee). ACCEPTED resolution
      • copy the implementations into local code base for use there (there are issues here with impl/API drift etc).
    • Q: What's the use of the API? Is it being use to directly use/manipulate/modify typed.Lists that came from Numba JIT code?
    • A: Google Abseil string impl in use, could return vector of string views. Wants the C API to return typed.List to hold string view pointer to then later use in Numba JIT region. Could use NumPy array for similar.
    • Q: meminfo used in Numba for NRT based memory management, lots of models have this, why are they interacting with this?
    • A: The meminfo contains a refcount of the allocation so it's always present in any object that Numba has allocated on the heap. Once out of scope the refcount hits zero and the dtor runs. It's a bit like C++ auto/smart pointer.
    • Q: meminfo is used for refcounts, its all done atomically in Numba?
    • A: Confirmed!
    • Resolution for this PR is accept with docs RE stability.
  • SciPy BLAS/LAPACK removal research outcome
    • 0.56 release was challenging because of scipy so Stuart explored the possibility to remove Scipy dependency.
    • Scipy needed for BLAS/LAPACK bindings
    • Removal is possible because these bindings are available in NumPy now
    • Fortran ABI problem means we need C-BLAS wrappers.
    • Managed to use to C-wrappers to get ABI stable BLAS/LAPACK function pointers
    • Fortran ABI uses pointers for everything. The C-wrappers mean we need to redo all the "ez" wrappers in Numba due to changes in signature
    • Note: We can just reference by name the c-BLAS wrappers and then lazy init to stick the addresses in the right place at the right time.
    • Worth doing but perhaps not now given the amount of changes needed for 0.57 already.
    • Maybe for 0.58 so as to reduce the dependency chain.
  • Discussion about how to better deal with lack of tracebacks.
    • Numerous internal problem in Numba to fix this quickly
    • Luk recommend: Show last function and line that failed
    • Change CC to store line number and function name into e.g. NRT thread local, func return pops, i.e. shadow call stack. v. costly!
    • Stuart tried to make GDB break at point of exception raise (and gdb python bindings), will make PR.
    • Need to move to ORC jit to get mapped executble region extents to allow registration with e.g. libunwind.

1. New Issues

  • #8506 - Test test_wrapper_address_protocol_libm failing on mainline
    • don't know why yet. maybe test state issues
  • #8507 - CUDA: Warp-aggregated atomics example no longer works
  • #8509 - Deprecate numba.pycc
  • #8510 - Tracebacks in compiled code don't include all frames
  • #8511 - Exceptions raised in @lower_builtin implementations do not have an associated location.
  • #8512 - Support catching exceptions raised in njit code from within gdb
  • #8514 - njit with np. histogram vs np.histogram, but get different output on an edge case
  • #8515 - Numba appears to merge consecutive prange calls
  • #8519 - Meta Issue: NumPy Random Generator Support

Closed Issues

  • #8501 - A context manager numba implementation
  • #8502 - Numba 0.56.3 Checklist
  • #8516 - I want to get Numba IR detail of the function in other libraries
  • llvmlite#882 - Can llvmlite compile Python3 code dirctly into LLVM

2. New PRs

  • #8500 - Add string comparison and information methods from the numpy.char module.
  • #8513 - Added support for numpy.newaxis
  • #8517 - make some typedlist capis public
  • #8518 - Adjust stencil tests to use hardcoded python source opposed to AST.
  • #8520 - Added noncentral-chisquared, noncentral-f and logseries distributions
  • llvmlite#883 - Adds support for calling functions with 'tail', 'notail', or 'musttail' markers.

Closed PRs

  • merged - #8503 - Update version support table for 0.56.3
  • merged - #8504 - Update CHANGE_LOG for 0.56.3
  • merged - #8505 - Cherry picks for 0.56.3
  • merged - #8508 - This updates the release checklists to capture some more checks

3. Next Release: Version 0.57.0/0.40.0, RC Jan 2023

Clone this wiki locally