为什么torch.version.cuda与deviceQuery查询的CUDA版本不一致
各版本不一致的原因说明
你看到的不同CUDA版本数值来自完全不同的组件,不存在冲突,分别解释如下:
关于PyTorch显示CUDA 10.2、nvcc显示CUDA 10.1的差异
PyTorch官方提供的预编译安装包默认会自带对应版本的CUDA运行时库,不会依赖系统安装的CUDA组件。你当初在虚拟环境中安装的PyTorch本身就是适配CUDA 10.2的版本,所以打印出来的torch.version.cuda就是10.2,这也是你PyTorch运行时实际使用的CUDA版本。
而nvcc是CUDA的编译开发组件,你后续通过sudo apt install nvidia-cuda-toolkit安装的是Ubuntu官方源自带的CUDA工具包,源内默认的版本为10.1,因此nvcc -V返回10.1,这个版本仅影响你自行编译CUDA代码的场景,和PyTorch自带的运行时互不干扰。关于deviceQuery显示CUDA 11.4的疑问
你的猜测正确,deviceQuery是你从11.4版本的CUDA Samples中编译出来的可执行文件,编译时链接的是11.4版本的CUDA运行时,因此返回运行时版本为11.4。另外这里显示的11.4同时也是你的NVIDIA显卡驱动支持的最高CUDA版本,NVIDIA驱动本身向下兼容所有低于该版本的CUDA运行时,所以你使用10.1、10.2版本的CUDA都可以正常运行。关于/usr/local下的CUDA目录
该目录结构完全正常,是Debian/Ubuntu系系统通过alternatives机制管理多版本CUDA的标准配置:cuda-11.4是CUDA 11.4版本的实际安装目录cuda-11是指向11.x大版本中默认CUDA版本的软链接cuda是指向系统全局默认CUDA版本的软链接
你可以通过update-alternatives命令灵活切换系统默认的CUDA版本。
内容的提问来源于stack exchange,提问作者desmond13

