Files
project_6/cccl_upstream/docs/libcudacxx/standard_api.rst
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

153 lines
29 KiB
ReStructuredText

.. _libcudacxx-standard-api:
Standard API
============
.. toctree::
:hidden:
:maxdepth: 2
standard_api/algorithms_library
standard_api/c_library
standard_api/concepts_library
standard_api/container_library
standard_api/execution_library
standard_api/numerics_library
standard_api/ranges_library
standard_api/synchronization_library
standard_api/time_library
standard_api/type_support
standard_api/utility_library
Standard Library Backports
--------------------------
C++ Standard versions include new language features and new library features. As the name implies, language features
are new features of the language the require compiler support. Library features are simply new additions to the
Standard Library that typically do not rely on new language features nor require compiler support and could conceivably
be implemented in an older C++ Standard.
Typically, library features are only available in the particular C++ Standard version (or newer) in which they were
introduced, even if the library features do not depend on any particular language features.
In effort to make library features available to a broader set of users, the NVIDIA C++ Standard Library relaxes this
restriction. libcu++ makes a best-effort to provide access to C++ Standard Library features in older C++ Standard
versions than they were introduced. For example, the calendar functionality added to ``<chrono>`` in C++20 is made
available in C++14.
----
.. |V| unicode:: U+2705
C++ Feature Availability Summary
--------------------------------
.. table::
:widths: 25 25 8 8 8 8 20
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| **Library** | ``Libcu++`` | **≤ C++17** + **C++20** | **C++23** | **C++26** | **Notes** |
+====================================================================================+======================================================================================+================+=============+=============+=============+================================================================================================================+
| `<array> <https://en.cppreference.com/w/cpp/header/array>`_ | :ref:`<cuda/std/array> <libcudacxx-standard-api-container-array>` | |V| | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<atomic> <https://en.cppreference.com/w/cpp/header/atomic>`_ | ``<cuda/std/atomic>`` | |V| | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<barrier> <https://en.cppreference.com/w/cpp/header/barrier>`_ | ``<cuda/std/barrier>`` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<bit> <https://en.cppreference.com/w/cpp/header/bit>`_ | :ref:`<cuda/std/bit> <libcudacxx-standard-api-numerics-bit>` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<bitset> <https://en.cppreference.com/w/cpp/header/bitset>`_ | :ref:`<cuda/std/bitset> <libcudacxx-standard-api-utility-bitset>` | |V| | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<charconv> <https://en.cppreference.com/w/cpp/header/charconv>`_ | ``<cuda/std/charconv>`` | |V| | | |V| | |V| | Converting floating point types is currently unsupported |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<chrono> <https://en.cppreference.com/w/cpp/header/chrono>`_ | :ref:`<cuda/std/chrono> <libcudacxx-standard-api-time>` | |V| | |V| | | | Timezone and clocks added in C++20 are not available |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<complex> <https://en.cppreference.com/w/cpp/header/complex>`_ | :ref:`<cuda/std/complex> <libcudacxx-standard-api-numerics-complex>` | |V| | |V| | | |V| | ``constexpr`` if ``is_constant_evaluated`` is supported |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<concepts> <https://en.cppreference.com/w/cpp/header/concepts>`_ | :ref:`<cuda/std/concepts> <libcudacxx-standard-api-concepts>` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<execution> <https://en.cppreference.com/w/cpp/header/execution>`_ | :ref:`<cuda/std/execution> <libcudacxx-standard-api-execution>` | | | | |V| | Only ``cuda::std::execution::prop``, ``cuda::std::execution::env``, ``cuda::std::execution::get_env`` for now |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<expected> <https://en.cppreference.com/w/cpp/header/expected>`_ | :ref:`<cuda/std/expected> <libcudacxx-standard-api-utility-expected>` | | | |V| | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<functional> <https://en.cppreference.com/w/cpp/header/functional>`_ | :ref:`<cuda/std/functional> <libcudacxx-standard-api-utility-functional>` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<initializer_list> <https://en.cppreference.com/w/cpp/header/initializer_list>`_ | ``<cuda/std/initializer_list>`` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<inplace_vector> <https://en.cppreference.com/w/cpp/header/inplace_vector>`_ | :ref:`<cuda/std/inplace_vector> <libcudacxx-standard-api-container-inplace-vector>` | | | | |V| | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<iterator> <https://en.cppreference.com/w/cpp/header/iterator>`_ | ``<cuda/std/iterator>`` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<latch> <https://en.cppreference.com/w/cpp/header/latch>`_ | ``<cuda/std/latch>`` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<limits> <https://en.cppreference.com/w/cpp/header/limits>`_ | ``<cuda/std/limits>`` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<linalg> <https://en.cppreference.com/w/cpp/header/linalg>`_ | :ref:`<cuda/std/linalg> <libcudacxx-standard-api-numerics-linalg>` | | | | |V| | Accessors, transposed layout, and related functions |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<mdspan> <https://en.cppreference.com/w/cpp/header/mdspan>`_ | :ref:`<cuda/std/mdspan> <libcudacxx-standard-api-container-mdspan>` | | | |V| | |V| | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<memory> <https://en.cppreference.com/w/cpp/header/memory>`_ | :ref:`<cuda/std/memory> <libcudacxx-standard-api-utility-memory>` | |V| | |V| | | | ``cuda::std::addressof``, ``cuda::std::align``, ``cuda::std::assume_aligned``, Uninitialized memory algorithms |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<numbers> <https://en.cppreference.com/w/cpp/header/numbers>`_ | :ref:`<cuda/std/numbers> <libcudacxx-standard-api-numerics-numbers>` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<numeric> <https://en.cppreference.com/w/cpp/header/numeric>`_ | :ref:`<cuda/std/numeric> <libcudacxx-standard-api-numerics-numeric>` | |V| | | | |V| | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<optional> <https://en.cppreference.com/w/cpp/header/optional>`_ | :ref:`<cuda/std/optional> <libcudacxx-standard-api-utility-optional>` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<ranges> <https://en.cppreference.com/w/cpp/header/ranges>`_ | :ref:`<cuda/std/ranges> <libcudacxx-standard-api-ranges>` | |V| | |V| | | | Requires C++20, Range based algorithms and views are not provided |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<ratio> <https://en.cppreference.com/w/cpp/header/ratio>`_ | ``<cuda/std/ratio>`` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<random> <https://en.cppreference.com/w/cpp/header/random>`_ | :ref:`<cuda/std/random> <libcudacxx-standard-api-numerics-random>` | |V| | | | | Includes some random engines and most random distributions |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<semaphore> <https://en.cppreference.com/w/cpp/header/semaphore>`_ | ``<cuda/std/semaphore>`` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<source_location> <https://en.cppreference.com/w/cpp/header/source_location>`_ | ``<cuda/std/source_location>`` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<span> <https://en.cppreference.com/w/cpp/header/span>`_ | :ref:`<cuda/std/span> <libcudacxx-standard-api-container-span>` | | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<tuple> <https://en.cppreference.com/w/cpp/header/tuple>`_ | :ref:`<cuda/std/tuple> <libcudacxx-standard-api-utility-tuple>` | |V| | | |V| | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<type_traits> <https://en.cppreference.com/w/cpp/header/type_traits>`_ | :ref:`<cuda/std/type_traits> <libcudacxx-standard-api-utility-type-traits>` | |V| | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<utility> <https://en.cppreference.com/w/cpp/header/utility>`_ | :ref:`<cuda/std/utility> <libcudacxx-standard-api-utility-utility>` | |V| | |V| | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<variant> <https://en.cppreference.com/w/cpp/header/variant>`_ | :ref:`<cuda/std/variant> <libcudacxx-standard-api-utility-variant>` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
| `<version> <https://en.cppreference.com/w/cpp/header/version>`_ | ``<cuda/std/version>`` | |V| | | | | |
+------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+----------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------+
----
C Feature Availability Summary
------------------------------
.. table::
:widths: 25 25 10
+--------------------------------------------------------------------+--------------------------+---------------+
| **Library** | ``Libcu++`` | **≤ C++17** |
+====================================================================+==========================+===============+
| `<cassert> <https://en.cppreference.com/w/cpp/header/cassert>`_ | ``<cuda/std/cassert>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<ccomplex> <https://en.cppreference.com/w/cpp/header/ccomplex>`_ | ``<cuda/std/ccomplex>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<cfloat> <https://en.cppreference.com/w/cpp/header/cfloat>`_ | ``<cuda/std/cfloat>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<climits> <https://en.cppreference.com/w/cpp/header/climits>`_ | ``<cuda/std/climits>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<cmath> <https://en.cppreference.com/w/cpp/header/cmath>`_ | ``<cuda/std/cmath>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<cstddef> <https://en.cppreference.com/w/cpp/header/cstddef>`_ | ``<cuda/std/cstddef>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<cstdint> <https://en.cppreference.com/w/cpp/header/cstdint>`_ | ``<cuda/std/cstdint>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<cstdlib> <https://en.cppreference.com/w/cpp/header/cstdlib>`_ | ``<cuda/std/cstdlib>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<cstring> <https://en.cppreference.com/w/cpp/header/cstring>`_ | ``<cuda/std/cstring>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
| `<ctime> <https://en.cppreference.com/w/cpp/header/ctime>`_ | ``<cuda/std/ctime>`` | |V| |
+--------------------------------------------------------------------+--------------------------+---------------+
see :ref:`C Libraries <libcudacxx-standard-api-c-compat>` for more details