Ubuntu16.04下torch.cuda.is_available()返回False,求CUDA适配方案
解决torch.cuda.is_available()返回False的问题
咱们先拆解下你的环境矛盾点:
- 系统层面的CUDA编译器(
nvcc -V)是7.5版本,对应的NVIDIA驱动版本肯定偏低 - 但Anaconda里装的是cudatoolkit 10.2和适配它的PyTorch 1.5.0
PyTorch能不能调用CUDA,核心是系统的NVIDIA驱动版本要和你安装的cudatoolkit版本兼容,你的情况是旧驱动拖了新toolkit的后腿,所以导致CUDA不可用。下面给你两个可行的解决方案,你可以根据需求选择:
方案一:升级系统CUDA驱动和Toolkit(推荐)
这个方案能保留你当前较新的PyTorch 1.5.0,后续开发体验更好。步骤如下:
1. 先查看当前驱动版本
运行命令确认你的NVIDIA驱动版本:
nvidia-smi
看输出里的Driver Version,如果是384.x或更低,那肯定不支持CUDA 10.2,必须升级。
2. 卸载旧的CUDA和驱动
先清理掉系统里的旧版本CUDA和驱动:
sudo apt-get purge nvidia* sudo apt-get autoremove sudo apt-get autoclean sudo rm -rf /usr/local/cuda*
3. 安装支持CUDA 10.2的驱动
添加NVIDIA官方软件源,然后安装对应驱动:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-driver-440
(CUDA 10.2要求驱动版本≥440.33,440版本是稳定兼容的选择)
4. 安装CUDA Toolkit 10.2
下载对应Ubuntu 16.04的CUDA 10.2安装包并安装:
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1604-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1604-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub sudo apt-get update sudo apt-get install cuda-10-2
5. 配置环境变量
编辑你的~/.bashrc文件,添加以下内容:
export PATH=/usr/local/cuda-10.2/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
然后让配置生效:
source ~/.bashrc
6. 验证
重新打开终端,运行nvcc -V应该显示CUDA 10.2版本,再运行Python检查:
import torch print(torch.cuda.is_available())
此时应该返回True了。
方案二:降级PyTorch和cudatoolkit(适合不想折腾系统的情况)
如果不想动系统的CUDA 7.5,那只能降级Anaconda里的PyTorch到兼容CUDA 7.5的版本,不过这个版本会比较老:
1. 卸载当前的PyTorch和cudatoolkit
conda uninstall pytorch cudatoolkit
2. 创建兼容的conda环境(可选但推荐)
因为PyTorch 0.4.1(兼容CUDA7.5的最新版本)只支持Python 3.6及以下,如果你当前是Python3.7,建议新建环境:
conda create -n torch_legacy python=3.6 conda activate torch_legacy
3. 安装兼容版本的PyTorch
conda install pytorch=0.4.1 cuda75 -c pytorch
4. 验证
激活环境后运行Python,检查torch.cuda.is_available()是否返回True。
内容的提问来源于stack exchange,提问作者Vishnukk
相关产品推荐
相关产品推荐

