Skip to content

Releases: NVIDIA/cccl

v3.4.2

Choose a tag to compare

@github-actions github-actions released this 05 Aug 18:54
Immutable release. Only release title and notes can be modified.
d360122

What's Changed

🔄 Other Changes

Full Changelog: v3.4.1...v3.4.2

v3.4.1

Choose a tag to compare

@github-actions github-actions released this 05 Aug 18:54
Immutable release. Only release title and notes can be modified.
6e3ed1e

What's Changed

🔄 Other Changes

  • [Backport to 3.4] Align tile state for warpspeed scan by @bernhardmgruber in #9781
  • [Backport branch/3.4.x] Do not vectorize large type reductions by @github-actions[bot] in #9775
  • [Backport branch/3.4.x] Update __cccl_ptx_isa by @fbusato in #9797
  • [Backport branch/3.4.x] Remove _CCCL_GRID_CONSTANT from DeviceSelectSweepKernel parameters by @github-actions[bot] in #9799
  • Bump branch/3.4.x to 3.4.1. by @wmaxey in #9721
  • Fix mypy CI error on 3.4 branch by @bernhardmgruber in #9849
  • [Backport to 3.4] Use plus tunings for lookahead scan more widely (#9813) by @bernhardmgruber in #9848
  • [Backport to 3.4] Fix scanning out-of-bounds items in OpenMP scan (#9759) by @bernhardmgruber in #9819
  • [Backport to 3.4] Remove most _CCCL_GRID_CONSTANT annotations, including merge sort by @bernhardmgruber in #9864

Full Changelog: v3.4.0...v3.4.1

CCCL Python Libraries (1.1.1)

Choose a tag to compare

@NaderAlAwar NaderAlAwar released this 16 Jul 14:41
Immutable release. Only release title and notes can be modified.
python-1.1.1
665cbf3

CCCL Python Libraries (v1.1.1)

Previous release: v1.1.0.

These are the release notes for the cuda-cccl Python package version 1.0.1, dated July 16th, 2026.

Bug Fixes / Packaging

  • Fixed an issue with the new warpspeed scan on windows + sm_120

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).

v3.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 15:15
Immutable release. Only release title and notes can be modified.
a5630ac

The CCCL team is excited to announce the 3.4 release of the CUDA Core Compute Libraries (CCCL). Highlights include major cub::DeviceScan performance improvements, convenient single-call overloads for all CUB device-wide algorithms, a new batched warp reduce, and cuda::std parallel STL algorithms.

Faster cub::DeviceScan on Blackwell

CCCL 3.4 comes with significant performance improvements for cub::DeviceScan on the NVIDIA Blackwell GPU architecture thanks to an all new warp-specialized implementation that leverages the Tensor Memory Accelerator (TMA).

image

CUB Single-Call Environment APIs

CCCL 3.4 completes the rollout of single-call, environment-based overloads for CUB device-wide algorithms.

Environment overloads remove the need to manually split a CUB call into a temporary-storage query phase and an execution phase. Instead, temporary storage is obtained from a memory resource in the execution environment. Streams, memory resources, and execution requirements can be composed into a single cuda::std::execution::env argument.

auto device = cuda::devices[0];
auto stream = cuda::stream{device};
auto pool = cuda::device_default_memory_pool(device);

auto env = cuda::std::execution::env{
  cuda::stream_ref{stream},
  pool
};

cub::DeviceReduce::Sum(d_in, d_out, num_items, env);

The traditional two-phase APIs are not deprecated and remain available for users who want explicit temporary-storage control.

For background, see Streamlining CUB with a Single-Call API. The full CUB environment API is documented in CUB Device-Wide Primitives.

New cub::WarpReduceBatched Warp Primitive

CCCL 3.4 adds cub::WarpReduceBatched, a new CUB warp-wide collective for reducing multiple independent batches of values partitioned across a warp. This can be up to 5x faster than issuing multiple independent cub::WarpReduce operations.

image

Thrust Iterator Migration to cuda:: Iterators

CCCL 3.4 continues consolidating shared iterator utilities under the cuda:: namespace.

The following Thrust iterator APIs are now deprecated in favor of their shared CCCL equivalents:

  • thrust::constant_iterator -> cuda::constant_iterator
  • thrust::make_constant_iterator -> cuda::make_constant_iterator
  • thrust::strided_iterator -> cuda::strided_iterator
  • thrust::make_strided_iterator -> cuda::make_strided_iterator

See the CCCL Fancy Iterators documentation.

Memory Resource Alignment Deprecation

CCCL 3.4 deprecates default-alignment overloads on type-erased memory resource wrappers.

Users should now pass allocation alignment explicitly when using resource wrappers such as cuda::mr::resource_ref, cuda::mr::synchronous_resource_ref, cuda::mr::any_resource, and cuda::mr::any_synchronous_resource.

See the Memory Resources documentation and cuda::resource_ref.

cuda::std Parallel STL Algorithms

CCCL 3.4 introduces support for the C++ Standard Library parallel algorithms model in cuda::std.

These algorithms are selected with the cuda::execution::gpu execution policy and operate on device-accessible ranges, bringing familiar standard algorithm interfaces to CUDA C++ while using CCCL/CUB machinery underneath.

See the cuda::std Algorithms Library documentation and the cuda::std parallel algorithms tracking issue.

Deprecations and Migration Notes

  • thrust::constant_iterator and thrust::make_constant_iterator are deprecated. Use cuda::constant_iterator and cuda::make_constant_iterator.
  • thrust::strided_iterator and thrust::make_strided_iterator are deprecated. Use cuda::strided_iterator and cuda::make_strided_iterator.
  • thrust::integer_sequence, thrust::index_sequence, and related helpers are deprecated in favor of cuda::std equivalents where available.
  • Default-alignment overloads on type-erased memory resource wrappers are deprecated. Pass alignment explicitly.
  • cuda::arch_id relational operators <, <=, >, and >= are deprecated. Compare cuda::compute_capability values instead.
  • cub::TexObjInputIterator is deprecated.
  • cub::AlignBytes<T> is deprecated. Use alignof(T) directly.
  • cuda::std::rel_ops is deprecated in C++20 mode.

CCCL Python Libraries (1.0.2)

Choose a tag to compare

@NaderAlAwar NaderAlAwar released this 16 Jun 15:07
Immutable release. Only release title and notes can be modified.
python-1.0.2
59c3940

CCCL Python Libraries (v1.0.2)

Previous release: v1.0.1.

These are the release notes for the cuda-cccl Python package version 1.0.1, dated June 16th, 2026.

Bug Fixes / Packaging

  • Fixed an issue with numpy scalars leading to unnecessary recompilations with stateful cuda.compute ops

CCCL Python Libraries (1.0.1)

Choose a tag to compare

@NaderAlAwar NaderAlAwar released this 09 Jun 15:09
Immutable release. Only release title and notes can be modified.
python-1.0.1
4785109

CCCL Python Libraries (v1.0.1)

Previous release: v1.0.0.

These are the release notes for the cuda-cccl Python package version 1.0.1, dated June 9th, 2026.

Bug Fixes / Packaging

  • Fixed an issue with the new warpspeed scan on sm_120 on windows
  • Fixed suppressed warnings appearing with CUDA 13.3 when building cuda.compute algorithms

v3.3.4

Choose a tag to compare

@github-actions github-actions released this 25 Jun 20:42
Immutable release. Only release title and notes can be modified.
413d2ef

What's Changed

🔄 Other Changes

  • Bump branch/3.3.x to 3.3.4. by @wmaxey in #8535
  • [Backport to 3.3]: Fix DeviceTransform byte-offset overflow when num_items*sizeof(T) > 4Gb by @bernhardmgruber in #8806
  • [Backport branch/3.3.x] Fix invalid C++ syntax: remove leading :: after struct in proclaims_copyable_arguments specializations by @github-actions[bot] in #8842
  • [Backport branch/3.3.x] Diagnose iterators to inputs with void value_type by @github-actions[bot] in #8012
  • [Backport branch/3.3.x] [libcu++] Fix __detectably_invalid value returned during constant evaluation by @github-actions[bot] in #8989
  • [Backport branch/3.3.x] [thrust] Fix thrust::transform test for gcc-15 by @github-actions[bot] in #8921
  • [Backport branch/3.3.x] Add missing if_consteval_in_nonconstexpr_function suppression for nvhpc by @github-actions[bot] in #8983
  • [Backport branch/3.3.x] [libcu++] Fix device fp128 functions test by @github-actions[bot] in #9021
  • [Backport to 3.3] Only enabled PDL for PTX/SASS supporting it (#9163) by @bernhardmgruber in #9188
  • [Backport branch/3.3.x] [cub] Fix warp reduce of fixed size random access range by @github-actions[bot] in #9182

Full Changelog: v3.3.3...v3.3.4

CCCL Python Libraries (1.0.0)

Choose a tag to compare

@shwina shwina released this 12 May 14:35
Immutable release. Only release title and notes can be modified.
e97a80f

CCCL Python Libraries (v1.0.0)

Previous release: v0.7.0.

This is the first stable release of the cuda-cccl Python package.

The cuda.compute module is now considered stable, and we will follow semantic versioning for changes to its public API going forward.

The cuda.coop module remains experimental and has been moved to cuda.coop._experimental to reflect that. See breaking changes below.

Installation

Please refer to the install instructions here.

API breaking changes

  • cuda.coop cooperative primitives moved to cuda.coop._experimental (#8788)

    The block, warp, and StatefulFunction entry points previously exported from cuda.coop have been moved to the cuda.coop._experimental submodule, signaling that their API is not yet stable and is expected to change in a future release. Top-level cuda.coop no longer re-exports these.

    Before:

    from cuda.coop import block, warp, StatefulFunction

    After:

    from cuda.coop._experimental import block, warp, StatefulFunction
  • cuda.cccl.cooperative legacy namespace removed (#8788)

    The deprecated cuda.cccl.cooperative package (previously kept as a transitional alias) has been removed entirely. Migrate any remaining imports to cuda.coop._experimental.

Features

  • Python 3.14 supportcuda-cccl is now built and tested against Python 3.14 in addition to 3.10–3.13 (#8870).

Bug Fixes / Packaging

  • Avoid incompatible numba-cuda versions — The dependency pin on numba-cuda was tightened to exclude 0.27.x, 0.28.x, 0.29.x, and 0.30.0, which contain regressions that break cuda-cccl (#8831).

Known issues

  • cuda.coop._experimental may fail with RuntimeError: nvdisasm was not found or could not be executed if nvdisasm is not discoverable. Follow the suggestion in the error message to install nvdisasm. If it is already installed, set the CUDA_PATH environment variable (not PATH) to the root of the directory containing bin/nvdisasm:

    export CUDA_PATH=/path/to/cuda   # such that $CUDA_PATH/bin/nvdisasm exists

Notes

  • cuda.compute itself has no API changes in this release relative to v0.7.0. The 0.7.0 release contained the API cleanup (keyword-only arguments, parameter reordering, d_in_values/d_out_values rename in merge_sort); 1.0.0 is the formal stabilization of that API.

CCCL Python Libraries (v0.7.0)

Choose a tag to compare

@shwina shwina released this 05 May 15:15
Immutable release. Only release title and notes can be modified.
1b6eeab

cuda-cccl Python package — version 0.7.0

Release date: May 5th, 2026. Previous release: v0.6.0.

cuda-cccl is in "experimental" status, meaning that its API and feature set can change quite rapidly.

Installation

Please refer to the install instructions here

API breaking changes

  • All cuda.compute functions now require keyword-only arguments (#8772)

    Every top-level function and factory (make_*) in cuda.compute now enforces keyword-only call
    syntax (i.e., all parameters must be passed by name). Positional calls will raise a TypeError.

    Before:

    reduce_into(d_in, d_out, op, num_items, h_init)

    After:

    reduce_into(d_in=d_in, d_out=d_out, num_items=num_items, op=op, h_init=h_init)

Features

  • System CUDA toolkit install extras — New pip extras sysctk12 / sysctk13 (and
    minimal-sysctk12 / minimal-sysctk13) allow installing cuda-cccl without pulling in
    cuda-toolkit as a pip dependency, for users who already have CUDA installed system-wide
    (#8608):

    pip install cuda-cccl[sysctk13]          # full install, system CTK
    pip install cuda-cccl[minimal-sysctk13]  # no Numba, system CTK

Performance

  • Faster binary searchlower_bound / upper_bound are now implemented via transform
    with a small linear search for the final steps, improving throughput on modern GPUs (#8642)
  • Adaptive warpspeed scan — The scan tuning policy now automatically selects the warpspeed
    (lookahead) scan path when beneficial for the data type and architecture (#8158)

Bug Fixes

  • Fix incorrect minimum CUDA architecture targeted when building the cccl.c native extension
    (#8631)