Skip to content

cuda+cudnn+pytorch install

整体概览

  • 时间:2023.12
  • wsl2版本:Ubuntu22.04
  • python版本:3.11
  • cuda版本:12.3
  • cudnn版本:8.9.6.50-1+cuda12.2
  • pytorch版本: py3.11_cuda12.1_cudnn8.9.2_0

不难发现这里面还有许多小版本是没完全对上的,pytorch < cudnn < cuda 版本(因为我都是安装的官网最新版,有些包更新不及时,希望以后不要出事)

基本环境

win11+wsl2+ubuntu+python+anaconda安装不再赘述

开始安装

CUDA

wsl2的GPU以及驱动是直接用的本机的(比如我的显卡是4070m),可以直接运行

nvidia-smi
命令,查看当前驱动所支持的最高cuda版本(如果不够高可以去下载最新的驱动安装即可) 然后直接去CUDA Toolkit 12.3 Update 1 Downloads | NVIDIA Developer上面查看最新的安装命令。例如: 可以直接本地输入

wget https://developer.download.nvidia.com/compute/cuda/12.3.1/local_installers/cuda_12.3.1_545.23.08_linux.run
sudo sh cuda_12.3.1_545.23.08_linux.run
然后跟着导引一路默认设置即可。注意最后一定要配置环境变量,例如在~/.bashrc最后添加:
export CUDA_INSTALL_PATH="/usr/local/cuda-12.3"
export PATH=$CUDA_INSTALL_PATH/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.3/lib64
最后可以运行
nvcc --version
确认已经安装好了cuda编译环境以及获取相应版本信息。

参考了CUDA on WSL2安装记录 - 知乎 (zhihu.com)

cuDNN

cudnn是一个深度神经网络的加速库,最好也安装。

要从网上下载安装包可以去cuDNN Archive | NVIDIA Developer下载(可能要先注册登录),例如我选择: 先用本机浏览器下载到本地,然后再用cp命令拷贝到wsl里的工作目录来安装。

具体安装流程参考Installation Guide - NVIDIA Docs比如我的命令是:

cp /mnt/d/wsl/cudnn-local-repo-ubuntu2204-8.9.6.50_1.0-1_amd64.deb cudnn.deb
sudo dpkg -i cudnn.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.6.50/cudnn-local-1998375D-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8=8.9.6.50-1+cuda12.2
sudo apt-get install libcudnn8-dev=8.9.6.50-1+cuda12.2
sudo apt-get install libcudnn8-samples=8.9.6.50-1+cuda12.2
这里有个小问题是【记录】cudnn安装时Version ‘8.x.x.x-1+cudaxx.x‘ for ‘libcudnn8‘ was not found-CSDN博客注意cudnn的cuda版本和本机的是否一致。

pytorch

直接访问官网Start Locally | PyTorch查询不同系统版本的安装命令,(pytorch官方还没更新到cuda12.3但是大版本一致暂时也没出错)例如我的: 直接输入

conda activate xxx
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
注意这里如果命令不对或者源在国内可能不小心安装成CPU版本的pytorch。。。

测试

创建test_gpu.py输入

import torch
flag = torch.cuda.is_available()
print(flag)

ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
如果
python gpu_test.py
输出类似下面的内容,即代表安装成功
True
cuda:0
NVIDIA GeForce RTX 4070 Laptop GPU