Skip to content

CCCL Python Libraries (v1.1.0)

Choose a tag to compare

@shwina shwina released this 09 Jul 22:58
Immutable release. Only release title and notes can be modified.

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.compute algorithm objects (#9644)

    New top-level cuda.compute.serialize() and cuda.compute.deserialize() functions let you turn a built algorithm object into bytes and 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.compute algorithms ahead of time for several compute capabilities at once, and on machines that have no GPU at all. This builds on separate compile and load steps in the underlying C layer (#8484), plus serialize()/deserialize() support in cccl.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/bool was JIT-rebuilt on every call because the cache keyed those scalars by id(). 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.66 in the CUDA extras (cuda-cccl[cu12] / [cu13]) to work around a temporary incompatibility with numba.cuda.types.NPDatetime (#9692).

Internal / CI

  • Added benchmarks to measure cuda.compute host-side overhead (#9432).
  • Added a CI job for the minimal cuda-cccl extra and explicit no-numba tests, decoupling more of the test suite from numba.cuda in favor of CuPy / cuda.core (#9434).

Notes

  • v1.1.0 also includes all fixes previously shipped in the 1.0.1 and 1.0.2 patch releases (e.g. NVRTC 13.3 warning fix #9171, reduce_into type-mismatch fix #9206, building against CCCL C v2 #9200, and numpy-scalar cache fix #9469).