Minor Version Compatibility#

CUDA 11 and Later Defaults to Minor Version Compatibility#

From CUDA 11 onwards, applications compiled with a CUDA Toolkit release from within a CUDA major release family can run, with limited feature-set, on systems having at least the minimum required driver version as indicated below. This minimum required driver can be different from the driver packaged with the CUDA Toolkit but should belong to the same major release.

Refer to the CUDA Toolkit Release Notes for the complete table.

Table 1 CUDA Toolkit 11.x, 12.x, and 13.x Minimum and Maximum Required Driver Versions (Refer to CUDA Release Notes)#

CUDA Toolkit

Minimum Required Driver Version

Maximum Required Driver Version

CUDA 13.x

>= 580

N/A

CUDA 12.x

>= 525

< 580

CUDA 11.x

>= 450 [1]

< 525

While applications built against any of the older CUDA Toolkits always continued to function on newer drivers due to binary backward compatibility, before CUDA 11, applications built against newer CUDA Toolkit releases were not supported on older drivers without forward compatibility package.

If you are using a new CUDA 10.x minor release, then the minimum required driver version is the same as the driver that’s packaged as part of that toolkit release. Consequently, the minimum required driver version changed for every new CUDA Toolkit minor release until CUDA 11.1. Therefore, system administrators always have to upgrade drivers in order to support applications built against CUDA Toolkits from 10.x releases.

Table 2 CUDA Toolkit 10.x Minimum Required Driver Versions#

CUDA Toolkit

Linux x86_64 Minimum Required Driver Version

Windows Minimum Required Driver Version

CUDA 10.2

>= 440.33

>=441.22

CUDA 10.1

>= 418.39

>=418.96

CUDA 10.0

>= 410.48

>=411.31

With minor version compatibility, upgrading to CUDA 11.1 is now possible on older drivers from within the same major release family such as 450.80.02 that was shipped with CUDA 11.0, as shown below:

$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
[...]
$ ./deviceQuery
./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "Tesla T4"
  CUDA Driver Version / Runtime Version          11.0 / 11.1
  CUDA Capability Major/Minor version number:    7.5
[...]

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.0, CUDA Runtime Version = 11.1, NumDevs = 1
Result = PASS

Minimum required driver version guidance can be found in the CUDA Toolkit Release Notes. Note that if the minimum required driver version is not installed in the system, applications will return an error as shown below.

$ ./deviceQuery
./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 3
-> initialization error
Result = FAIL

Application Considerations for Minor Version Compatibility#

Developers and system administrators should note three important caveats when relying on minor version compatibility. If either of these caveats are limiting, then a new CUDA driver from the same minor version of the toolkit that the application was built with or later is required.

  • Limited feature set

    Sometimes features introduced in a CUDA Toolkit version may actually span both the toolkit and the driver. In such cases an application that relies on features introduced in a newer version of the toolkit and driver may return the following error on older drivers: cudaErrorCallRequiresNewerDriver.

    As mentioned earlier, administrators should then also upgrade the installed driver. Alternatively, application developers can avoid running into this problem by having the application explicitly check for the availability of features.

  • Applications using PTX will see runtime issues

    Applications that compile device code to PTX will not work on older drivers.

    If the application requires PTX then administrators have to upgrade the installed driver. PTX Developers should refer to the PTX programming guide in the CUDA C++ Programming Guide for details on this limitation.

  • Requires target architecture argument to NVCC

    Minor Compatibility requires passing the target architecture argument to NVCC, for example nvcc -arch=sm_xx.

Deployment Considerations for Minor Version Compatibility#

Minor version compatibility has another benefit that offers flexibility in the use and deployment of libraries. Applications that use libraries that support minor version compatibility can be deployed on systems with a different version of the toolkit and libraries without recompiling the application for the difference in the library version. This holds true for both older and newer versions of the libraries provided they are all from the same major release family. Note that libraries themselves have interdependencies that should be considered. For example, each cuDNN version requires a certain version of cuBLAS.

NVRTC supports minor version compatibility from CUDA 11.3 onwards

Figure 3 NVRTC supports minor version compatibility from CUDA 11.3 onwards#