Releases: NVIDIA/cccl
Release list
v3.4.2
What's Changed
🔄 Other Changes
- Bump branch/3.4.x to 3.4.2. by @wmaxey in #10524
- Disable Tile compilation mode by @jrhemstad in #10522
Full Changelog: v3.4.1...v3.4.2
v3.4.1
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_isaby @fbusato in #9797 - [Backport branch/3.4.x] Remove
_CCCL_GRID_CONSTANTfromDeviceSelectSweepKernelparameters 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_CONSTANTannotations, including merge sort by @bernhardmgruber in #9864
Full Changelog: v3.4.0...v3.4.1
CCCL Python Libraries (1.1.1)
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)
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).
Notes
v3.4.0
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).
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.
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)
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)
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
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
voidvalue_typeby @github-actions[bot] in #8012 - [Backport branch/3.3.x] [libcu++] Fix
__detectably_invalidvalue returned during constant evaluation by @github-actions[bot] in #8989 - [Backport branch/3.3.x] [thrust] Fix
thrust::transformtest forgcc-15by @github-actions[bot] in #8921 - [Backport branch/3.3.x] Add missing
if_consteval_in_nonconstexpr_functionsuppression 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)
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.coopcooperative primitives moved tocuda.coop._experimental(#8788)The
block,warp, andStatefulFunctionentry points previously exported fromcuda.coophave been moved to thecuda.coop._experimentalsubmodule, signaling that their API is not yet stable and is expected to change in a future release. Top-levelcuda.coopno longer re-exports these.Before:
from cuda.coop import block, warp, StatefulFunction
After:
from cuda.coop._experimental import block, warp, StatefulFunction
-
cuda.cccl.cooperativelegacy namespace removed (#8788)The deprecated
cuda.cccl.cooperativepackage (previously kept as a transitional alias) has been removed entirely. Migrate any remaining imports tocuda.coop._experimental.
Features
- Python 3.14 support —
cuda-ccclis now built and tested against Python 3.14 in addition to 3.10–3.13 (#8870).
Bug Fixes / Packaging
- Avoid incompatible
numba-cudaversions — The dependency pin onnumba-cudawas tightened to exclude 0.27.x, 0.28.x, 0.29.x, and 0.30.0, which contain regressions that breakcuda-cccl(#8831).
Known issues
-
cuda.coop._experimentalmay fail withRuntimeError: nvdisasm was not found or could not be executedifnvdisasmis not discoverable. Follow the suggestion in the error message to installnvdisasm. If it is already installed, set theCUDA_PATHenvironment variable (notPATH) to the root of the directory containingbin/nvdisasm:export CUDA_PATH=/path/to/cuda # such that $CUDA_PATH/bin/nvdisasm exists
Notes
cuda.computeitself 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_valuesrename inmerge_sort); 1.0.0 is the formal stabilization of that API.
CCCL Python Libraries (v0.7.0)
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.computefunctions now require keyword-only arguments (#8772)Every top-level function and factory (
make_*) incuda.computenow enforces keyword-only call
syntax (i.e., all parameters must be passed by name). Positional calls will raise aTypeError.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 installingcuda-ccclwithout pulling in
cuda-toolkitas 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 search —
lower_bound/upper_boundare now implemented viatransform
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.cnative extension
(#8631)