.. _libcudacxx-setup-requirements: Requirements ============ All requirements are applicable to the ``main`` branch on GitHub. For details on specific releases, please see the :ref:`changelog `. Usage Requirements ------------------ To use the NVIDIA C++ Standard Library, you must meet the following requirements. System Software ~~~~~~~~~~~~~~~ The NVIDIA C++ Standard Library requires either the `NVIDIA HPC SDK `_ or the `CUDA Toolkit `_. libcu++ was first released in NVHPC 20.3 and CUDA 10.2. Some features are only available in newer releases. Please see the :ref:`Standard API section `, :ref:`Extended API section `, and :ref:`release section ` to find which features require newer releases. Releases of libcu++ are only tested against the latest releases of NVHPC and CUDA. It may be possible to use a newer version of libcu++ with an older NVHPC or CUDA installation by using a libcu++ release from GitHub, but please be aware this is not officially supported. C++ Dialects ~~~~~~~~~~~~ The NVIDIA C++ Standard Library supports the following C++ dialects: - C++11 - C++14 - C++17 A number of features have been backported to earlier standards. Please see the [API section] for more details. NVCC Host Compilers ~~~~~~~~~~~~~~~~~~~ When used with NVCC, the NVIDIA C++ Standard Library supports the following host compilers: - MSVC 2019 and 2022. - GCC 6, until 13. - Clang 14 until 18. - ICPC latest. - NVHPC 20.9 and 20.11. Device Architectures ~~~~~~~~~~~~~~~~~~~~ The NVIDIA C++ Standard Library fully supports the following NVIDIA device architectures: - Volta: SM 70 and 72. - Turing: SM 75. - Ampere: SM 80. The following NVIDIA device architectures are partially supported: - Maxwell: SM 50, 52 and 53. - Synchronization facilities are supported. - Pascall: SM 60, 61 and 62. - Blocking synchronization facilities (e.g. most of the synchronization primitives) are not supported. Please see the :ref:`synchronization primitives section ` for details. Host Architectures ~~~~~~~~~~~~~~~~~~ The NVIDIA C++ Standard Library supports the following host architectures: - aarch64. - x86-64. Host Operating Systems ~~~~~~~~~~~~~~~~~~~~~~ The NVIDIA C++ Standard Library supports the following host operating systems: - Linux. - Windows. - Android. - QNX. Build and Test Requirements --------------------------- To build and test libcu++ yourself, you will need the following in addition to the usage requirements: - `CMake `_. - `LLVM `_. - You do not have to build LLVM; we only need its CMake modules. - `lit `_, the LLVM Integrated Tester. - We recommend installing lit using Python's pip package manager.