报错解决:RuntimeError:The detected CUDA version mismatches the version that was used to compile PyTorch.

当CUDA版本与PyTorch版本不匹配时,会引发RuntimeError。解决方法包括在conda环境中安装对应版本的CUDA和cudnn,或者通过本地安装CUDA。安装过程中可能遇到GCC版本不兼容和安装路径问题,可通过指定参数或修改环境变量来解决。多版本CUDA切换可以通过修改软链接或bashrc中的路径实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错

博主在编译安装软件时,遇到报错如下:

File "/home/XXX/miniconda3/envs/lin/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 404, in build_extensions
        self._check_cuda_version()
File "/home/XXX/miniconda3/envs/lin/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 781, in _check_cuda_version
        raise RuntimeError(CUDA_MISMATCH_MESSAGE.format(cuda_str_version, torch.version.cuda))
RuntimeError:
    The detected CUDA version (11.3) mismatches the version that was used to compile PyTorch (10.2). Please make sure to use the same CUDA versions.

报错原因:CUDA版本和Pytorch版本不匹配。

解决方法:安装对应版本的CUDA

在Linux系统中安装cuda和cudnn一般有两种方法:

  1. 在conda虚拟环境中安装。此方法不需要sudo管理员权限,比较适合在公有的电脑或服务器上开发使用。默认安装地址在/anaconda3/envs/[$EnvName]/路径下。
  2. 在官网下载deb或runfile文件进行本地安装。此方法有无sudo管理员权限均可,比较适合在自己的电脑或服务器上开发使用。默认安装地址在/usr/local/路径下。

注意:在大多数情况下,在conda虚拟环境中安装 cudatoolkit (第一种安装方法)是可以满足 Pytorch 等框架的使用需求的。但对于一些特殊需求,如需要为 Pytorch 框架添加 CUDA 相关的拓展时(Custom C++ and CUDA Extensions),需要对编写的 CUDA 相关的程序进行编译等操作,则需安装完整的 Nvidia 官方提供的 CUDA Toolkit. (第二种安装方法)。

conda虚拟环境中安装

创建conda环境并激活,在该环境中安装cuda和cudnn(在此以10.2版本为例):

# 安装cudatoolkit
conda install cudatoolkit=10.2
# 安装cudnn,自动选版本与cuda版本相匹配
conda install cudnn

在bashrc中指定CUDA环境(需要替换anaconda3的路径以及环境名称):

vim ~/.bashrc
# add head file search directories 
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/[$YourUserName]/anaconda3/envs/[$YourEnvName]/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/[$YourUserName]/anaconda3/envs/[$YourEnvName]/include
# add shared library searching directories
export LIBRARY_PATH=$LIBRARY_PATH:/[$YourUserName]/anaconda3/envs/[$YourEnvName]/lib
# add runtime library searching directories
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/[$YourUserName]/anaconda3/envs/[$YourEnvName]/lib

本地安装

前往官网,下载低版本的cuda并安装,例如我选择安装cuda10.2,网页如下图所示:
在这里插入图片描述
运行如下指令进行安装:

wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo chmod +x cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run

输入accept:
在这里插入图片描述
取消安装cuda驱动(因为在这之前已经安装好更高版本的显卡驱动就不需要再重复安装)
在这里插入图片描述

  • 若有root权限,则默认安装路径为/usr/local/目录下,点击Install即可。
  • 若没有root权限,则需要在Options选项中修改Toolkit Options 、Library install path这两项的路径,例如修改安装路径为/home/usrname/cuda-10.2/,详细操作可以参考https://zhuanlan.zhihu.com/p/198161777,然后再点击Install。

Do you want to install a symbolic link at /usr/local/cuda? # 是否将安装目录通过软连接的方式 link 到 /usr/local/cuda
选择yes

安装完成后,终端会有如下输出:

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-10.2/
Samples:  Installed in /root/, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-10.2/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-10.2/lib64, or, add /usr/local/cuda-10.2/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-10.2/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.2/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 440.00 is required for CUDA 10.2 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

Logfile is /var/log/cuda-installer.log

检查cuda版本:

nvcc --version

在这里插入图片描述
结果如上图所示,说明安装成功。

多版本切换

如果安装了多个cuda版本,需要进行其他cuda版本的切换可以按照如下两个方法:

方法一:通过修改软链接的方式

  1. 将~/.bashrc 下与cuda相关的路径都改为/usr/local/cuda/,而不使用具体某一cuda版本,例如cuda-10.2、cuda-11.3等。
  2. 修改软连接
# 删除之前创建的软链接
rm -rf /usr/local/cuda
# 建立新的软连接
sudo ln -s /usr/local/cuda-11.3/ /usr/local/cuda/
# 查看当前cuda版本
nvcc --version

方法二:修改bashrc中cuda的路径
打开bashrc文件,在最后添加如下:(根据需要使用cuda版本修改版本号):

# 根据自身情况修改cuda版本
export PATH=/usr/local/cuda-10.2/bin:$PATH
export CUDA_PATH=/usr/local/cuda-10.2
export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH

之后source更新一下source ~/.bashrc

附录:可能遇到的报错

报错一:GCC版本不兼容

Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.

使用以下指令进行安装:

sudo sh cuda_10.2.89_440.33.01_linux.run --override

报错二:安装路径报错

Installation failed. See log at /var/log/cuda-installer.log for details.

查看log的报错原因

cat /var/log/cuda-installer.log | grep [ERROR]

发现报错原因是:

[ERROR]: boost::filesystem::remove: Directory not empty: "/var/log/nvidia/.uninstallManifests/"

使用以下命令进行安装:

sudo sh cuda_10.2.89_440.33.01_linux.run --librarypath=/usr/local/cuda-10.2
<think>嗯,用户遇到了一个CUDA版本不匹配的错误,导致安装mmcv-full失败。错误信息显示检测到的CUDA版本是11.3,而PyTorch是用10.2编译的。我需要先理解这个问题的根本原因,然后一步步引导用户解决。 首先,用户可能安装了与PyTorch版本不兼容的CUDAPyTorch不同版本依赖特定的CUDA版本,如果用户直接安装mmcv-full,它会尝试根据当前环境中的CUDA版本来编译,但PyTorch可能是在另一个CUDA版本下构建的,导致冲突。 接下来,我应该建议用户检查PyTorchCUDA版本。可以通过运行Python代码来确认,比如输入`import torch; print(torch.version.cuda)`。这一步很重要,因为有时候用户可能误以为系统安装的CUDA版本就是PyTorch使用的,但实际可能不同。 然后,用户需要确认系统中安装的CUDA版本。使用`nvcc --version`或者检查环境变量。这里可能需要区分运行时CUDA和驱动支持的CUDA版本,避免混淆。 接下来,解决方案可能包括两个方向:调整PyTorchCUDA版本或者调整系统CUDA环境。但考虑到用户已经在使用PyTorch,可能需要安装对应CUDA版本的PyTorch,或者安装预编译的mmcv-full版本。例如,使用`pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html`这样的命令,指定正确的CUDAPyTorch版本。 另外,用户可能需要卸载现有的PyTorch,重新安装与CUDA 11.3兼容的版本,或者反之,降低CUDA版本到10.2。但修改系统CUDA可能比较麻烦,所以优先建议调整PyTorch的版本。 可能需要注意的常见错误是用户没有正确匹配版本,或者下载链接中的版本号不正确。需要提醒用户根据实际情况替换命令中的CUDAPyTorch版本号。 最后,要确保用户按照步骤操作,并在每个步骤后验证版本是否匹配,例如重新检查PyTorchCUDA版本,确认安装后的环境是否正确。</think>这个错误提示表明你的CUDA版本(11.3)与当前PyTorch编译时使用的CUDA版本(10.2)不兼容。以下是分步解决方案: --- ### 第一步:确认版本对应关系 1. 检查PyTorchCUDA版本: ```python import torch print(torch.__version__) # 查看PyTorch版本 print(torch.version.cuda) # 查看PyTorch编译时使用的CUDA版本 ``` 2. 确认系统CUDA版本: ```bash nvcc --version # 显示当前安装的CUDA版本 ``` --- ### 第二步:两种解决方案(任选其一) #### 方案一:安装与现有PyTorch匹配的mmcv-full (适用于希望保持现有PyTorch版本的用户) 1. 根据PyTorch 10.2环境安装mmcv-full: ```bash pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html ``` (注意替换`cu102`和`torch1.7.0`为你的实际版本) #### 方案二:重新安装匹配的PyTorch (适用于可调整PyTorch版本的用户) 1. 卸载当前PyTorch: ```bash pip uninstall torch ``` 2. 安装CUDA 11.3对应的PyTorch: ```bash pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113 ``` 3. 重新安装mmcv-full: ```bash pip install mmcv-full ``` --- ### 关键验证步骤 - 重新执行版本验证: ```python import torch assert torch.version.cuda == '11.3' # 确保与系统CUDA版本一致 ``` --- ### 常见问题排查 1. **多版本CUDA共存**:通过`/usr/local/`目录检查已安装的CUDA版本 2. **环境变量冲突**:检查`LD_LIBRARY_PATH`是否指向正确的CUDA版本 3. **Docker环境**:如果使用容器,需要重新构建镜像时指定匹配的CUDA版本 --- ### 版本对照表(供参考) | PyTorch版本 | 官方推荐CUDA版本 | |-------------|------------------| | 1.12.x | 11.3/11.6 | | 1.10.x | 11.1 | | 1.9.x | 11.1 | | 1.8.x | 10.2 | 建议通过[PyTorch官方安装指南](https://pytorch.org/get-started/previous-versions/)查询准确对应关系。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI Player

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值