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

Numba Meeting: 2022-11-01

Attendees: Val, Andre Masella, brandon willard, Guilherme, Jim Pivarski, Kaustubh Chaudhari, LI Da, Shannon Quinn, stuart, Todd A. Anderson, Siu Kwan Lam FPOC (last week): Val FPOC (Incoming): Graham

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

Please refer to this calendar for the next meeting date.

0. Discussion

  • 0.56.4 release (Val)
    • Resolves issue with CUDA device array view on NumPy 1.23 (#8537)
    • Aiming to tag by Thursday 3rd November
      • Artifact upload by Friday 4th November
  • py3.11 status (siu)
  • Default @overload target as 'generic' (#8554) (stu).
    • Finale of 2 years effort to build framework for extending Numba with new targets
    • Means that overloads can be called from CPU, CUDA, or any target by default and it should "just work" (modulo features that actually work on the target)
  • M1 LLVM assertion error at compile time update (Stu/Siu)
    • Full writeup coming soon! Stay tunes!
    • Just minimal Audio commentary for now.
    • This is an LLVM issue for sure, probably not fixed with LLVM 14 either.
    • Numba is just unlucky to have hit this, and probably it can't be fixed by changing Numba.
    • Relies on large JIT compiled program, then allocate something large on the heap (100MB), then JIT something again, then....
    • Current hypothsis: Runtime linker is unable to genrate jumps that cross a span of virtual memory triggers the assertion error.
    • There is currently no fix for this on M1 and the failures are quite random. Bad news for M1.
    • Platform conditional skip around the test that creates the giant memory?
    • The change to leverage stencil tests to all Python versions is likely what started to trigger this.
    • Maybe connect to LLVM devs like Lang or David Spiket (spelling?) or someone who knows about linker.
  • Adding support for new NumPy dtypes out-of-tree (Graham)
  • Switch error mode to new_style (Guilherme)
    • New style errors: if a standard exception (non-Numba exception) is raised anywhere in compilation, compilation stops immediately.
      • If you want to cause an error e.g. for a non-acceptable type, you need to raise a subclass of NumbaError instead.
    • It's more useful when developing Numba compared to the old style
    • Suggestion is to make it the default now
    • Stuart: anything that motivates this? Answer: no
    • Need to deprecate the old style of errors
      • Anyone using it might find their code doesn't compile when they upgrade
    • Expected to work well given it's the default on CI, but need to warn users first in case they have overloads they're using.
    • Conclusion: it is a good idea, but we need to deprecate the old style first before making new the default.
  • Writing/updating code to use libm as the base (stu)
    • Various power functions math.pow, np.power, etc. - all doing similar things with slightly different implementations possibly referencing each other, making it difficult to debug and implement the expected behaviour in all cases.
    • Question: "What would be a better abstraction for these implementations?"
    • Differentiating the implementations at the point of libm function calls would be a better abstraction
      • E.g. libm function for power for CPU might call C libm
      • The power function for CUDA in libm might instead call libdevice
      • The power function overloads then all use overloaded libm instead of calling into other overloads like math.pow etc.
      • In general implementations should then be written in terms of libm to make behavior consistent.
    • Questions:
      • Val: Would this involve vendoring a libm? Answer: no, we'd just need to wrap platform libm functions with a call to them - no need to jit compile low-level libm functions themselves. Will add a numba.libm module that stubs the functions, then we @overload the stubs for CUDA, CPU, etc.

1. New Issues

Closed Issues

  • #8548 - Azure CI builds of main failing on rstcheck

2. New PRs

  • #8544 - Remove reliance on npy_<impl> ufunc loops.
  • #8545 - Py3.11wip
  • #8547 - [Unicode] Add more string view usages for unicode operations
  • #8550 - Changes how tests are split between test instances
  • #8554 - Make target for @overload have 'generic' as default.
  • #8555 - Try xml test reporting in Azure
  • #8556 - Fix np.fmod to match numpy behavior
  • #8557 - [Unicode] support startswith with args, start and end.
  • #8558 - [Unicode] support int(str, base=10)
  • #8560 - CUDA: Get rid of _nvvm_options_type
  • #8562 - Cherry picks 0.56.4
  • llvmlite#886 - Simplify setup.py Python version guard
  • llvmlite#887 - Speeds up module.add_debug_info and add_metadata by 2x

Closed PRs

  • merged - #8541 - Remove restoration of "free" channel in Azure CI windows builds.
  • merged - #8542 - CUDA: Make arg optional for Stream.add_callback()
  • merged - #8549 - Fix rstcheck in Azure CI builds, update sphinx dep and docs to match
  • merged - #8552 - Update version support table for 0.56.4.
  • merged - #8553 - Update CHANGE_LOG for 0.56.4

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

Clone this wiki locally