CCCL Python Libraries (v1.1.0)
CCCL Python Libraries (v1.1.0)
Previous release: v1.0.2.
These are the release notes for the cuda-cccl Python package version 1.1.0.
The headline of this release is support for serialization and ahead-of-time (AoT) compilation of cuda.compute algorithm objects. There are no breaking changes to the public API.
Installation
Please refer to the install instructions here.
Features
-
Serialization of
cuda.computealgorithm objects (#9644)New top-level
cuda.compute.serialize()andcuda.compute.deserialize()functions let you turn a built algorithm object intobytesand reconstruct it later. These are low-level building blocks for ahead-of-time compilation, on-disk caches, and cross-node communication of algorithm objects.Compile once and write to disk:
import cuda.compute as cc, cupy as cp d_in = cp.empty(1) d_out = cp.empty(1) op = lambda x: 2 * x transformer = cc.make_unary_transform(d_in=d_in, d_out=d_out, op=op) with open("transform.cclb", "wb") as f: f.write(cc.serialize(transformer))
Load and run from a subsequent process (no rebuild):
import cuda.compute as cc, cupy as cp with open("transform.cclb", "rb") as f: transformer = cc.deserialize(f.read()) d_in = cp.asarray([1., 2, 3]) d_out = cp.empty_like(d_in) transformer(d_in=d_in, d_out=d_out, op=lambda x: 2 * x, num_items=len(d_in)) # d_out == [2., 4., 6.]
-
Ahead-of-time (AoT) compilation for multiple compute capabilities, including GPU-less builds (#9732)
You can now compile
cuda.computealgorithms ahead of time for several compute capabilities at once, and on machines that have no GPU at all. This builds on separatecompileandloadsteps in the underlying C layer (#8484), plusserialize()/deserialize()support incccl.c(#9568). Documentation and examples for the serialization / AoT workflows were added as part of this work.
Bug Fixes / Performance
-
Fixed build-cache misses for closures over Python scalars (#9680, closes #9626) — an op that closed over a plain Python
int/float/boolwas JIT-rebuilt on every call because the cache keyed those scalars byid(). They are now keyed by value. -
Relaxed the histogram build-cache key (#9596, closes #9594) — avoids unnecessary recompilations.
-
Fixed the v2 (host-JIT) backend rejecting some well-known operators (#9649).
Packaging
- Pinned
numba < 0.66in the CUDA extras (cuda-cccl[cu12]/[cu13]) to work around a temporary incompatibility withnumba.cuda.types.NPDatetime(#9692).
Internal / CI
- Added benchmarks to measure
cuda.computehost-side overhead (#9432). - Added a CI job for the
minimalcuda-ccclextra and explicit no-numbatests, decoupling more of the test suite fromnumba.cudain favor of CuPy /cuda.core(#9434).