注意,这里右上角所显示的 cuda version 是指当前 nvidia 所支持的 cuda 的最高版本,也就是说是可以兼容 cuda 12.1 的。
nvidia-smi 显示的的 cuda version 是当前驱动支持的最大 cuda toolkit 的版本。
CUDA有两种API,分别是运行时API和驱动API,即所谓的Runtime API与Driver API。[可参考:CUDA Compatibility]
nvidia-smi 的效果除了有 GPU 驱动版本型号,另有 CUDA Driver API 的版本号,而 nvcc -V 的效果是对应 CUDA Runtime API。CUDA Runtime API 依赖 CUDA Driver API。
利用conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia 命令安装 pytorch 时,附带的 CUDA 和从官网安装的 CUDA 有何不同?一言以蔽之:前者是后者的子集,是 pytorch 所必须的那一部分子集,而像编译器 nvcc 等非必须的 CUDA 组件则没有。
Pytorch每每只必要利用 CUDA 的动态链接库使程序顺遂运行,因为其中利用 CUDA 计算的部分是提前编译好的 ,就像常见的可实行程序一样,不必要重新进行编译过程,只必要其所依赖的动态链接库存在即可正常运行。
当两者同时安装时,pytorch 深度学习环境会优先利用前者。当没有单独安装CUDA时,如果在安装pytorch时安装了 CUDA 子集,那么环境也是可以正常利用的,这在pytorch的源码中可以发现。因此建议利用深度学习环境的同砚非必要不安装单独的CUDA,只需保持显卡驱动的正常更新即可。