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 primitives) are not supported. Please see the 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: