w11+wsl+3060安装cuda等深度学习环境

把一切都重新又梳理学习了一遍,然后发现很多事情其实没必要弄

0. 显卡驱动、nvidia-smi、cuda、nvcc、cuDNN、pytorch、cudatoolkit与它们之间的关系

笔者本人鸟枪换炮了,还是wsl环境香,但是按照官方教程跑完后,遇到了bugRuntimeError:No CUDA GPUs are available,于是强行再把之前一知半解的部分弄明白了。

显卡驱动:刚需部分,wsl环境下有windows的显卡驱动其实就够用了。
nvidia-smi:打包在显卡驱动内,装了显卡驱动后可以用来检验是否安装成功的显卡监测工具包。笔者也在wsl中安装了一下,目前没发现有冲突。
w11+wsl+3060安装cuda等深度学习环境_第1张图片

cuda:分为两个cuda。一个是运行时的库,一个是开发用库(学过Java的人可以用jre和jdk来理解)。运行时的库,可以通过pip来安装在python的依赖里(比如cudatoolkit,或者torch+cuu),基本上深度学习代码用这部分就行。开发用的组件,是安装在操作系统中,一般用不到。cuda定义是NVIDIA提供的一种并行计算平台,提供编程接口让代码能在GPU上执行。CUDA有 runtime api和 driver api,两者都有对应的CUDA版本, nvcc --version 显示的就是前者对应的CUDA版本,而 nvidia-smi显示的是后者对应的CUDA版本。参考【CUDA】nvcc和nvidia-smi显示的版本不一致? - 简书 (jianshu.com)
CUDA版本可以通过在~/.bashrc修改path切换:

export CUDA_HOME=/etc/alternatives/cuda
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}

cuDNN:可以被打包在cuda内,cuda相当于是工作台,cuDNN就是插件。非刚需,但是如果代码要用这种深度学习加速就需要。

nvcc:属于CUDA的编译器,将程序编译成可执行的二进制文件。一般来说如果安装了ubuntu平台上的开发用cuda,就会包含有nvcc(可以把这里的nvcc理解为gcc这种编译器)。

pytorch:需要根据自己的显卡型号算力来安装合适范围内的torch版本,因为cuda版本一定程度上需要和torch版本兼容。
w11+wsl+3060安装cuda等深度学习环境_第2张图片
w11+wsl+3060安装cuda等深度学习环境_第3张图片
w11+wsl+3060安装cuda等深度学习环境_第4张图片

cudatoolkit 是 NVIDIA CUDA Toolkit 的 Python 包装器。通常可以使用 Python 的包管理工具 pipconda 来完成。

PS:根据开发者的回复:《Would pytorch for cuda 11.6 work when cuda is actually 12.0 - PyTorch Forums》可以得知,当前的pytorch包会自带cuda的二进制文件。所以完全可以不在ubuntu中安装cuda,必须要安装的只有以下三个

  • 显卡驱动
  • python
  • pytorch+cudatoolkit或者pytorch+cuda(例如上图中的torch+cu117或者pytorch+cudatoolkit,总之是torch附上一个cuda二进制库)

1. 把wsl部分引入

注意,以下部分是在之前用的,有些步骤可能是冗余的,只是目前能跑所以就没管
官方教程:

GPU in Windows Subsystem for Linux (WSL) | NVIDIA Developer

NVIDIA GPU Accelerated Computing on WSL 2

笔者环境为win11+rtx3060,步骤记录如下:

  1. 在windows系统本身环境下安装对应版本的Geforece驱动,根据官网配置推荐 笔者选择了GeForce Game Ready Driver 531.79

  2. 安装wsl2(中间好像有坑,把报错必应搜索一下应该就能解决了)

  3. 进入wsl界面

  4. sudo apt-key del 7fa2af80,在这个过程中遇到了apt-key的报错,放着不管也没事,如果想了解一下,可以参考stackOverflow

  5. 按照官网教程命令安装wsl上的cuda驱动,如果遇到The public cuda-repo-wsl-ubuntu-12-1-local GPG key does not appear to be installed,就按照他提示的执行一次sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-8F52B5FE-keyring.gpg /usr/share/keyrings/ ,然后再执行原命令即可【后面发现这一步其实完全可以不做】

  6. 安装conda/python/torch等包,验证torch.cuda.is_available() PREFIX=/home/tempo/anaconda3

  7. 然后就可以在wsl上爽玩啦(^▽^)

  8. 可能遇到的bug与解决方案: RuntimeError:No CUDA GPUs are available,

    1. conda没写到PATH里面新开窗口找不到conda于是又装了一遍。【后续发现跟wsl的su命令也有关系,su不加用户名之后会进入root的状态,用户文件夹变成了/home,所以conda消失了】
  9. 后续进阶技能点:Vscode与WSL,pycharm与WSL①,pycharm与WSL②, 在pycharm上配置wsl的conda环境

常用命令记录

# cd到windows的目录(以挂载卷的形式存在的)
cd /mnt/c

#注意:powershell命令   NAME      STATE           VERSION | Ubuntu    Running         2
wsl -l -v

ls -l /usr/local | grep cuda
# lrwxrwxrwx  1 root root   22 May 15 15:22 cuda -> /etc/alternatives/cuda
# lrwxrwxrwx  1 root root   25 May 15 15:22 cuda-12 -> /etc/alternatives/cuda-12
# drwxr-xr-x 15 root root 4096 May 15 15:22 cuda-12.1


nvcc --version
# nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2021 NVIDIA Corporation
# Built on Thu_Nov_18_09:45:30_PST_2021
# Cuda compilation tools, release 11.5, V11.5.119
# Build cuda_11.5.r11.5/compiler.30672275_0

which nvcc
# /usr/bin/nvcc

which nvidia-smi
# /usr/lib/wsl/lib/nvidia-smi

验证安装的全家桶是否可用

# 版本为:torch==1.10.2+cu113
# 这个cu113是有它的意义所在的……

### '1.5.0'
torch.__version__ 
### True
torch.cuda.is_available() 
### 7605
torch.backends.cudnn.version() 
### '10.2'
torch.version.cuda 

参考资料:

cuda 和 cudnn 库的卸载与安装 - 知乎 (zhihu.com)

ubuntu解决没有nvcc命令的错误-CSDN博客

NVIDIA/cuda-samples: Samples for CUDA Developers which demonstrates features in CUDA Toolkit (github.com)

在这里插入图片描述
Support Matrix - NVIDIA Docs**(官方的cudnn库匹配)**

如何查看cudnn当前版本_Linux 和 Windows 查看 CUDA 和 cuDNN 版本_weixin_39916758的博客-CSDN博客

解决CUDA error: no kernel image is available for execution on the device_图灵机学长的博客-CSDN博客

你可能感兴趣的:(个人经验总结,环境搭建,深度学习,pytorch,python,cuda)