【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
1.Versioning and Compatibility
在开发CUDA应用程序时,开发人员需要关注两个版本号:1)device的计算能力(见:Compute Capability);2)CUDA驱动API的版本。
CUDA驱动API的版本在驱动头文件中被定义为CUDA_VERSION
。驱动API是向后兼容的,也就是说,即使驱动程序升级,使用旧版本API编译的应用程序仍然可以运行。注意,驱动API并不向前兼容,也就是说,使用较新的驱动API编译的程序无法运行在旧版本的驱动程序上。
需要注意的是,版本的混合和匹配存在一定的限制:
- 由于系统一次只能安装一个版本的CUDA驱动,所以安装的驱动程序版本必须与系统上需要运行的任何应用程序、插件或库所编译的最高驱动API版本一致或更高。
- 应用程序使用的所有插件和库必须使用相同版本的CUDA运行时,除非它们静态链接到运行时,在这种情况下,不同版本的运行时可以共存于同一进程空间中。需要注意的是,如果使用
nvcc
链接应用程序,默认情况下将使用CUDA运行时库的静态版本,并且所有CUDA工具包库都会静态链接到CUDA运行时。 - 应用程序使用的所有插件和库必须使用与运行时相关库(如cuFFT、cuBLAS等)相同的版本,除非静态链接到这些库。
对于Tesla GPU产品,CUDA 10引入了一种新的用户模式组件的前向兼容升级路径,但这一兼容性仅适用于用户模式组件。