Changelog#
The entry of each release is written by python-semantic-release from the messages of the commits it contains; see the development guide.
v0.1.0 (2026-10-16)#
Initial Release
0.1.0 at a glance#
The first release of numba-vulkan, a Vulkan compute target for Numba, as alpha software. Python kernels go through Numba’s pipeline to LLVM IR, through LLVM’s SPIR-V backend, and run as Vulkan compute shaders. It was written by an AI under human direction and review (see the authorship page of the documentation).
Tested on an NVIDIA TITAN X (Pascal), Intel UHD Graphics 630 and Mesa’s llvmpipe on Linux, an Apple M3 Pro through MoltenVK, and Mesa’s lavapipe on Windows; the benchmarks also ran on an Intel Arc GPU under Windows.
Kernels#
@nv.jitkernels launched withkernel.forall(n)(...)orkernel[groups, local_size](...), on NumPy arrays, device arrays and scalars; device functions called from kernels;numba.vectorizeandnumba.guvectorizewithtarget="vulkan", includingreduce.mathfunctions and NumPy ufuncs,float64math from a bundled libclc, with workarounds for drivers whose built-in functions are inaccurate.Control flow of any shape, restructured into the form shaders need.
Workgroup-shared memory, barriers, atomics, subgroup operations (
nv.subgroup), local arrays,print,float16arrays, structured (record) arrays, NumPy arrays as global constants.Array views, slicing and slice assignment, iteration, reductions over whole arrays and along an axis, and lazy array expressions.
Exceptions raised in kernels, reported by the launch;
boundscheck=True.32-bit integers by default where Numba uses 64-bit ones; devices without
float64,int64orint8are supported.
Runtime#
Device arrays: views, NumPy indexing (basic and advanced), NumPy ufuncs and operators computed on the device.
Asynchronous launches on device arrays, batched into few submissions; scalars and shapes as push constants; launch plans that skip typing for repeated launches.
Streams (
nv.stream,nv.pinned_array) that overlap copies and kernels, events (nv.event) for timing on the device, andnv.autotunefor choosing between candidate kernels.Compiled kernels cached on disk;
cache=Truekeeps whole kernels across processes.NUMBA_VULKAN_DEBUGruns Khronos’ validation layer, including its synchronization checks.
Known issues#
See the known-issues page of the documentation: among them, recursion, arrays whose size is only known at run time, 64-bit atomics, and LLVM IR rewritten as text.