最新WSL2 ubuntu环境 cuda,教程,适用于40系显卡

  • Post author:
  • Post category:其他


实验环境:ubuntu2204 、ubuntu1804,最新4060笔记本电脑,自我觉得是目前比较好用的搭配:

wsl2+gnome+wsl中的pycharm,写的很全,都是亲测好用的,研究了1周得到的最好搭配。

教程

官方文档


https://learn.microsoft.com/zh-cn/windows/wsl/

  1. 准备环境和驱动


http://events.jianshu.io/p/6f3195bad5f1

这个教程现在看不了图片,但不太影响,

看他的前9步,也可以执行后面的存储位置迁移,到处的tar文件可以理解为安装包,有了这个包就可以实现多台电脑上使用同一个系统了。

注意

所有的mnt挂载目录的所有者都是默认用户,如果我们不是以默认用户登录,那么挂载文件(也可以说是windows的文件),就没有权限修改,这个可以通过修改conf修改默认用户,下次挂载文件所有者就会更换。

  1. 配置图形化界面等进阶操作


https://blog.csdn.net/RenLJ1895/article/details/122741040

可以双方相互访问文件资源,等等

其中图形化界面涉及到了display变量的使用


https://blog.csdn.net/rockpk008/article/details/38325179

  1. 使用GUI APP,vscode,git等等

参考微软的官方手册


https://learn.microsoft.com/en-us/windows/wsl/setup/environment

  1. (可选)安装gnome的图形化程序(亲测可用)

这个回答


https://askubuntu.com/questions/1252007/opening-ubuntu-20-04-desktop-on-wsl2/1365455#1365455?newreg=73a1533e00d64d7e8034fb0566634f27

这里可以更方便地使用systemd,见ubuntu的文档


https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-11-with-gui-support#4-configure-ubuntu

/sbin/init的文件路径就是systemd文件夹的软连接,如果ps查看为/sbin/init说明更换成功,或者直接输入命令systemctl,如果成功返回则成功。

修改字体

禁止锁屏

注意点

  1. 我最开始创建wsl.conf文件时是在我windows系统中,就是txt文件改一下后缀,但是这种行不通,是CRLF的换行符就会导致配置无法生效,要改一下行分隔符,改为LF,就是linux用的。

  1. vscode有可能会报

这样的错误,这里就涉及到一些权限的知识了。

比如我们想修改/etc下的wsl.conf,在/etc输入

ls -l

可以查看文件的详细信息,包括权限

可以看到wsl.conf是root所有的,他又rw就是读和写权限,并且其他人只能读,不能写,那么我们可以,这里的7也就是二进制的111,对应rwx就是r=1,w=1,x=1也就是有全部的权限。

sudo chmod 777 wsl.conf

  1. 安装gcc,更新apt包

gcc直接安装build-essional包

sudo apt update
sudo apt install build-essential

  1. 可能出现的问题


WSL2出现“参考的对象类型不支持尝试的操作”的解决方法


https://cloud.tencent.com/developer/article/1986728

  1. 安装Mambaforge

用Mambaforge集成了mamba和conda,mamba是conda的c语言实现版。

下载地址


https://github.com/conda-forge/miniforge#mambaforge

使用教程


https://mamba.readthedocs.io/en/latest/installation.html

  1. 安装cudatoolkit(只使用pytorch的话可以不安装)


https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=runfile_local

安装完成后要添加环境变量,在~/.bashrc中,比如我的是cuda12.1版本

export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/targets/x86_64-linux/lib:$LD_LIBRARY_PATH

  1. 安装pytorch和cuda

比如我想安装pytorch1.10可以使用命令如下,可以在官网上找到


https://pytorch.org/get-started/previous-versions/

conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge

但官网给出的命令并不能成功,即使是配置好了第七步的cudatoolkit。

解决方法一:



添加pytorch-cuda=11.8到安装语句中即可解决问题


测试在pytorch1.10上有效,1.09无效,尽量选择高版本pytorch

conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 pytorch-cuda=11.8 -c pytorch -c conda-forge

调用测试的py文件

import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda)

输出

1.10.1

True

11.3

可以看到安装成功了


原因猜测

输入命令

conda list |grep cuda

可以看到

可以看到cuda11.8带来了很多东西,可能是40系显卡只能使用最新的running api等才能完成cuda的调用,而cuda11.8好像并没有wsl的cudatoolkit能够下载到,目前原因还不太清楚。

方法二:

使用pip安装,比如

pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html

  1. (可选)安装cudNN(和ubuntu一样的安装方式)

需要先安好第8步的cuda toolkit

cuDNN所有包的下载位置


cuDNN Archive | NVIDIA Developer

官方文档安装教程(亲测有效)


Installation Guide :: NVIDIA cuDNN Documentation

两种安装方式

其中的tar文件或者deb文件名要替换成自己的。其他直接照着敲就行


1、Tar 文件安装(不推荐)


在发出以下命令之前,您必须更换XY和 v8.xxx与您的特定 CUDA 和 cuDNN 版本和包日期。


  1. 导航到您的<cudnn路径>包含 cuDNN tar 文件的目录。


  1. 解压缩 cuDNN 包

$ tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz

  1. 将以下文件复制到 CUDA 工具包目录中

$ sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
$ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

2、deb安装(推荐)

通过第一种Tar 文件安装的方式可以了解到,安装cudNN实际上就是加入了一些库和头文件到cuda toolkit中。

  1. 通过mobaxterm的x11连接pycharm

mobaxterm配置

确保mobaxterm的x server已打开(打开为彩色,关闭为灰色)

配置

使用多窗口,硬件加速,所有主机都可访问x11

pycharm下载

ubuntu直接敲命令就行

sudo snap install pycharm-professional --classic

之后在


远程桌面链接的gnome中(只能在这里有效,见第4步的配置)


中打开终端,输入

 pycharm-professional

mobaxterm会检测到pycharm的x11请求,并建立链接。

至此就配置完毕了~

11.wsl2配置代理(尝试没有成功)


https://www.cnblogs.com/tuilk/p/16287472.html

  1. wsl出现内存不够用,shd不够用的情况

内存不够用

增大swap分区可以缓解这个状况,swap分区就是硬盘的一部分被用来做虚拟内存了,

见官方文档中的配置,

.wslconfig 的配置设置部分


https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config

可以看到默认是真机内存的25%作为默认swap,我们想改按照文档的格式进行修改就好了

shd不够用

dev/shd就是share memory,是

在内存中存储,可以多个进程共享访问的文件的一片区域,

,深度学习并行计算可能会用到一个包叫shared array,就是创建共享内存的。shd默认也只有内存的25%,不过我们可以通过重新挂载的方式进行扩充,详细见


https://blog.csdn.net/Sunny_Future/article/details/100569637

经验证使用普通快速修改可以成功

# 普通快速修改
# mount -o size=16000M  -o  remount  /run/shm

这里我给/run/shm分配16G,可以将这条命令写在bashrc或profile中,因为这条命令可以多次执行,并且已经在shm中的文件不会消失。

最优当然是使用修改/etc/fstab来进行修改,不过我这个没有成功

# 修改 tmpfs size 
# echo 'tmpfs                /run/shm             tmpfs   defaults,size=1.2G        0 0' >>  /etc/fstab

wsl配置输入法

如果是ubuntu的pycharm输入法


https://monkeywie.cn/2021/09/26/wsl2-gui-idea-config/

还有搜狗的教程


https://shurufa.sogou.com/linux

我是两个都试了试,结果成功了,不知道是那种有效了。可以都试一下



按win+shift+t的组合键,可以改输入法,如果输入法调不出来了试试win+shift+t


搜狗输入法看不到打的汉字内容解决:

进入搜狗设置,将显示变为竖排,就可以看到打出的汉字了

但有时输入法会抽风,出不来,这时可以试试对输入法配置进行一下修改,如下图进入修改页面,就随便修改就可能会好,很玄学,我也是瞎改。



版权声明:本文为zxyOVO原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。