--- parent: Setup nav_order: 0 --- # Requirements All requirements are applicable to the `main` branch on GitHub. For details on specific releases, please see the [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 [Standard API section], [Extended API section], and [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 2017 and 2019. - GCC 5, 6, 7, 8, 9, and 10. - Clang 7, 8, 9, and 10. - 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 library) are not supported. Please see the [synchronization library section] for details. ### Host Architectures The NVIDIA C++ Standard Library supports the following host architectures: - aarch64. - x86-64. - ppc64le. ### 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. [Standard API section]: ./standard_api.md [Extended API section]: ./extended_api.md [synchronization library section]: ./standard_api/synchronization_library.html [changelog]: ./releases/changelog.md [NVIDIA HPC SDK]: https://developer.nvidia.com/hpc-sdk [CUDA Toolkit]: https://developer.nvidia.com/cuda-toolkit [CMake]: https://cmake.org [LLVM]: https://github.com/llvm [lit]: https://pypi.org/project/lit/