Numba Activity Newsletter, February 2024.
Editor for this month: @sklam
What happened:
- Numba launched a user survey… Numba User Survey 2024 we’re really interested in what you do with Numba and what you’d like Numba to do for you in the future. Your opinion really matters and the survey only takes 5-10 minutes to complete, so please do fill it in if you have time, many thanks
- Posted communication letter detailing NumPy 2.0 changes
- Numba’s new “office hours” format is attracting new attendees. To try and cover more time zones, every 3rd Wednesday of the month the office hours will be run at 12pm (midday) GMT, this replacing the Tuesday office hours for those weeks. The details and calendar link are in this post https://numba.discourse.group/t/weekly-public-meeting-changes-office-hours-and-jitsi. It’s hoped that this will make it easier for folks in more Eastern time zones to be involved.
- A few small regressions were reported against Numba 0.59.0 (tracked here Issues · numba/numba · GitHub), all of which have patches proposed to fix them. A 0.59.1 release is planned to carry these fixes, it will likely be tagged sometime in March 2024, as resources allow.
- NumPy completed a partial revert of ENH: change list-of-array to tuple-of-array returns (Numba compat) by rgommers · Pull Request #25570 · numpy/numpy · GitHub in REV: revert tuple/list return type changes for `*split` functions by rgommers · Pull Request #25800 · numpy/numpy · GitHub so as to reinstate
numpy.*stack
functions returning homogeneously typed lists (to help Numba be able to compile them!). - Following up on a reported regression in 0.59.1 (Bug: (regression) cooperative grid sync w/ cache=True - working in 0.58.1, not working in 0.59.0 · Issue #9432 · numba/numba · GitHub)
@gmarkall
and@stuartarchibald
spent quite a bit of time debugging and resolving some issues with the target-extension API, culminating in WIP: Don't attempt to register overloads that aren't for this target in `BaseContext` by gmarkall · Pull Request #9454 · numba/numba · GitHub. For those who are unfamiliar with it, this API lets you extend Numba to new hardware targets. It is closing in on being sufficiently well developed to be released as a public API in the near future. - The amount of issues/questions related to both runtime and compilation performance of Numba has been increasing. To help track this,
@sklam
enhanced Numba’s test runner with timing information andXML
output in Add timing and junit xml output to testsuite by sklam · Pull Request #9436 · numba/numba · GitHub. A new addition to the test suite was proposed in Add performance suite by sklam · Pull Request #9460 · numba/numba · GitHub, this adds a“performance tests”
group to help track performance issues. This is integrated with CI such that regressions and improvements should be more easily tracked! - The performance of loops emitted by the
range
builtin was assessed by@sklam
and it was noticed that the use ofsrem
etc (instructions for the modulo operation) were likely making it harder for LLVM to optimise/vectorize the loop. A rewrite was done of the corresponding code generation in Optimize `range()` to enable more auto-vectorization by sklam · Pull Request #9428 · numba/numba · GitHub to address this. @guilherme
added support formath.log2
to the CPU target andnumpy.log*
to the CUDA target (Add math.log2 support by guilhermeleobas · Pull Request #9416 · numba/numba · GitHub and Add np.log* bindings for CUDA by guilhermeleobas · Pull Request #9417 · numba/numba · GitHub respectively).@stuartarchibald
has been adding support to Numba’s dispatcher for Python 3.12’s newsys.monitoring
event system (so as to make Numba functions appear incProfile
output when running under Python 3.12); this will land in Numba 0.60.@sklam
added support fornp.datetime64
andnp.timedelta64
types to theisinstance
implementation Support datetime types in `isinstance()` by sklam · Pull Request #9455 · numba/numba · GitHub.
Ongoing:
- Work on NumPy 2.0 support continued…
@kc611
has untangled Numba’s CPython and NumPy implementations (there’s a decade of history in there to preserve!) in Remove dependencies between Numba's Cpython and NumPy module by kc611 · Pull Request #9437 · numba/numba · GitHub. This in preparation for NumPy 2.0 support.- NumPy 2.0 type system work continued. Type system implementation #1: Added initial implementation for a new type system. by kc611 · Pull Request #9408 · numba/numba · GitHub was replaced with a new approach in Type system implementation #1 (Alternative): Added initial implementation for a new type system using redundancies. by kc611 · Pull Request #9446 · numba/numba · GitHub whereby Numba will carry two type systems for a while. The existing one and a new type system where Python and NumPy scalar types are considered separately, use of this or the existing type system is configurable by an environment variable.
@stuartarchibald
has drafted a communication document explaining the anticipated impact of NumPy 2.0 on Numba users. It is currently being reviewed by the maintainers and will be released in the next few weeks, do look out for it!@kc611
testedHEAD
of Numba against the NumPy 2.0 nightly builds in Numpy 2.0 binary support testing by kc611 · Pull Request #9466 · numba/numba · GitHub. Numba is close to being binary compatible with NumPy 2.0, however, a few issues are still present and are being worked on.
- Due to resource constraints, work on the LLVM upgrade to 15.0 has been delayed, it’s hoped it will start sometime in the near future.
@guilherme
’s work on enabling use of@guvectorize
compiled functions insidenjit
Support @gufunc inside @jit by guilhermeleobas · Pull Request #8984 · numba/numba · GitHub has been re-reviewed and has moved closer to being merged. It’s anticipated that this will be in Numba 0.60.
Coming up this month (March 2024):
- Work this month will be heavily focussed on writing the new type system to accommodate NumPy 2.0 and other related NumPy 2.0 preparations.
- Numba 0.59.1 will be released.
Meeting/FPOC schedule for this month (March 2024):
Public meeting: 2024-03-05
Office hours: 2024-03-12, 2024-03-20 (EU hours), 2024-03-26
FPOC (first port of call) duty rota, this is the maintainer who will respond to tickets/issues/PRs during the noted week and run the office hours/public meeting at the end of the week:
- 2024-03-05
@stuartarchibald
- 2024-03-12
@esc
- 2024-03-19
@kc611
- 2024-03-26
@guilherme
Thanks for reading!