Files
muh-bot 2a7ca101d7 feat(cccl): integrate missing CCCL directories — python/, ci/, .agent/, docs/, test/
Sparse-checkout from NVIDIA/cccl main branch to complete cccl_upstream:

Added:
- python/cuda_cccl/ (226 files) — Python bindings for device-level algorithms
  Critical for muh toolchain: cuda.compute.reduce_into, scan, radix_sort, etc.
  Includes 204 .py files with full test coverage for all 27 algorithms
- ci/ (163 files) — Build/test infrastructure
  build_cub.sh, test_cub.sh, build_and_test_targets.sh, matrix.yaml
  Directly maps to our [INFRA-CI] and [INFRA-BUILD] items
- .agent/skills/ (7 files) — NVIDIA's own agent skills for CCCL
  cccl-style/SKILL.md, cccl-test/SKILL.md, sass-diff/SKILL.md
- docs/ (491 files) — Official CCCL documentation
  CI references, CMake guides, Python compute docs, libcudacxx PTX docs
- test/ (12 files) — Top-level integration tests (cuda_smoke, stdpar)
- Root configs: .clang-format, .clang-tidy, CONTRIBUTING.md, pyproject.toml
- CLAUDE.md symlink → AGENTS.md (NVIDIA's standard)

cccl_upstream now mirrors full NVIDIA/cccl structure:
  Before: 42M (cub + thrust + libcudacxx + cudax + c + examples + benchmarks)
  After:  53M (+python +ci +docs +.agent +test +configs)

This completes the CCCL base needed for:
- [muh-bench] items: ci/util/build_and_test_targets.sh for targeted builds
- [CCCL-verify] items: python/cuda_cccl/tests/ as reference implementations
- [CCCL-test] items: ci/test_cub.sh, ci/test_thrust.sh
- Agent workflow: .agent/skills/ for consistent style and test patterns
2026-08-07 02:34:33 +00:00

71 lines
2.9 KiB
ReStructuredText

.. _cccl-cpp-libraries:
CUDA C++ Core Libraries
=======================
.. toctree::
:hidden:
:maxdepth: 3
libcudacxx/index
cub/index
thrust/index
cudax/index
cccl/tma
cccl/determinism
cccl/config_macros
cccl/3.0_migration_guide
cccl/development/index
cccl/contributing
cccl/license
Welcome to the CUDA Core Compute Libraries (CCCL) libraries for C++.
The concept for the CCCL C++ librarires grew organically out of the Thrust,
CUB, and libcudacxx projects that were developed independently over the years
with a similar goal: to provide high-quality, high-performance, and
easy-to-use C++ abstractions for CUDA developers. Naturally, there was a lot
of overlap among the three projects, and it became clear the community would
be better served by unifying them into a single repository.
- :doc:`libcu++ <libcudacxx/index>`
is the CUDA C++ Standard Library. It provides an implementation of the C++
Standard Library that works in both host and device code. Additionally, it
provides abstractions for CUDA-specific hardware features like
synchronization primitives, cache control, atomics, and more.
- :doc:`CUB <cub/index>`
is a lower-level, CUDA-specific library designed for speed-of-light parallel
algorithms across all GPU architectures. In addition to device-wide
algorithms, it provides *cooperative algorithms* like block-wide reduction
and warp-wide scan, providing CUDA kernel developers with building blocks to
create speed-of-light, custom kernels.
- :doc:`Thrust <thrust/index>`
is the C++ parallel algorithms library which inspired the introduction of
parallel algorithms to the C++ Standard Library. Thrust's high-level
interface greatly enhances programmer productivity while enabling performance
portability between GPUs and multicore CPUs via configurable backends that
allow using multiple parallel programming frameworks (such as CUDA, TBB, and
OpenMP).
- :doc:`Cuda Experimental <cudax/index>`
is a library of experimental features that are still in the design process.
The main goal of the CCCL C++ libraries is to fill a similar role that the
Standard C++ Library fills for Standard C++: provide general-purpose,
speed-of-light tools to CUDA C++ developers, allowing them to focus on
solving the problems that matter. Unifying these projects is the first step
towards realizing that goal.
CUDA C++ Tile support
======================
`CUDA Tile <https://developer.nvidia.com/cuda/tile#section-more-resources>`_ introduces a new way to program GPUs at a higher level than SIMT.
Due to the additional constraints of tile compilation :doc:`CUB <cub/index>`, :doc:`Thrust <thrust/index>`
and :doc:`Cuda Experimental <cudax/index>` are currently not supported in a tile program.
There is partial support for :doc:`libcu++ <libcudacxx/index>` for tile programs.
The current support matrix can be found in the :doc:`libcu++ documentation <libcudacxx/tile>`