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

2023-05-16

实验环境: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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最新WSL2 ubuntu环境 cuda,教程,适用于40系显卡 的相关文章

  • 注意力机制总结

    文章目录 1 通道注意力1 1 SENet xff08 谁用谁知道 xff0c 用了都说好 xff09 2 通道 amp 空间2 1 CBAM2 2 scSE2 3 Coordinate Attention 3 self attention
  • 轻量级网络总结

    文章目录 1 SqueezeNet2 ShuffleNet2 1 v12 2 v2 3 MobileNet3 1 v13 2 v23 3 v3 4 GhostNet4 1 v14 2 v2 1 SqueezeNet SqueezeNet A
  • 【低光增强】Zero-DCE

    文章目录 一 前言二 算法理解2 1 低光增强曲线2 2 整体框架2 3 网络结构2 4 损失函数2 4 1 空间一致性2 4 2 曝光控制2 4 3 色彩恒常2 4 4 光照平滑 2 5 Zero DCE 43 43 三 效果测试 一 前
  • 【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

    文章目录 0 前言1 理解1 1 整体框架1 2 网络结构1 3 细节 2 亮点3 总结 0 前言 LTMNet这篇文章借鉴了CLAHE算法 xff0c 所有步骤与CLAHE一致 xff0c 不同之处在于LTMNet中局部映射曲线是通过CN
  • 【数字图像处理】边缘检测

    文章目录 0 前言1 Sobel算子2 Canny算子3 深度学习算法3 1 Holistically Nested Edge Detection xff08 HED xff09 3 2 Richer Convolutional Featu
  • 语义分割总结

    文章目录 0 前言1 数据集2 经典网络2 1 FCN2 2 U Net2 3 DeepLab2 4 PSPNet2 5 SegNet2 6 CCNet2 7 SegFormer 3 损失函数4 评价指标5 最新进展 xff08 2023
  • 使用matlab绘制世界地图并根据经纬度绘制点位(附m_map的下载与安装说明)

    文章目录 1 worldmap amp geoshow2 m map工具箱3 根据经纬度在世界地图上绘制点位 使用matlab绘制世界地图有两种方法 xff08 自己使用过的 xff0c 可能有别的我不了解的方法 xff09 xff1a 第
  • C 语言使用宏自定义可打印的枚举(enum) 类型

    1 前言 xff1a 说点废话 xff0c 时间紧的请直接跳过 xff0c 看后面的实现 尽管本人很反感 C 语言中的宏定义 xff0c 特别是滥用宏定义经常会让问题变的扑朔迷离 xff0c 但是不得不承认 xff0c 在某些时候 xff0
  • Matlab GUI设计之坐标转换(附Matlab GUI设计学习手册完整版pdf)

    文章目录 如何开始 xff1f 1 界面布局2 编写回调函数 相信看这篇文章的你们大部分没有用Matlab做过界面设计 xff0c 其实不只是你们 xff0c 我也是第一次 xff08 手动滑稽 xff09 xff0c 在此将我的经验同大家
  • 【Linux】线程互斥

    目录 1 进程线程间的互斥相关背景概念 2 互斥量mutex 2 1 基本概念 2 2 售票系统举例 2 3 解释 3 互斥量的接口 3 1 初始化互斥量 3 1 1 静态分配 3 1 2 动态分配 xff08 pthread mutex
  • C语言经典算法(八)——递归实现斐波那契数列的两种方法

    后继续整理算法并写出自己的理解和备注 C 43 43 实现的 xff1a 递归实现斐波那契数列 1 递归实现斐波那契数列Fib n lt 1 gt 题目描述 输入n值 xff0c 求解第n项的斐波那契数列值 lt 2 gt 方法一 概念法
  • 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    你是否遇到过这样的情况 xff1a 从终端软件登录远程的Linux主机 xff0c 将一堆很大的文件压缩为一个 tar gz文件 xff0c 连续压缩了半个小时还没有完成 xff0c 这时 xff0c 突然你断网了 xff0c 你登录不上远
  • Vue+Element-UI上传图片到七牛云踩过的坑——返回 404,报错:Document not found

    文章目录 前端上传图片到七牛云的流程七牛云地址1 常见问题2 分清区别 xff1a 配置区域和访问域名 代码示例 不是进来找报错原因 xff0c 看怎么上传图片的 xff0c 先看上传流程和分清区别 xff1a 配置区域和访问域名找到域名
  • MySQL8.0.3安装过程详细

    xff08 如果以前安装过MySQL先卸载 xff09 一 MySQL卸载 1 以管理员身份打开命令提示符 2 停止MySQL后台服务 MySQL8为自己设置的MySQL服务名 D mysql 8 0 30 winx64 bin gt ne
  • 基于opencv 的人脸签到系统

    import cv2 import os import numpy as np from PIL import Image pillow import pyttsx3 import sys import json def makeDir e
  • LCA算法的实现

    include lt cstdio gt include lt string h gt include lt algorithm gt include lt set gt using namespace std const int MAXN
  • 卷积神经网络原理

    看了一篇通俗易懂的好文章 https brohrer mcknote com zh Hans how machine learning works how convolutional neural networks work html 关于
  • 括号匹配问题(并给出括号的位置)

    在纸上写了一个串 xff0c 只包含 39 39 和 39 39 一个 39 39 能唯一匹配一个 39 39 xff0c 但是一个匹配的 39 39 必须出现在 39 39 之前 请判断蒜头君写的字符串能否括号完全匹配 xff0c 如果能
  • Rust学习入门--【12】Rust 循环

    系列文章目录 Rust 语言是一种高效 可靠的通用高级语言 xff0c 效率可以媲美 C C 43 43 本系列文件记录博主自学Rust的过程 欢迎大家一同学习 Rust学习入门 1 引言 Rust学习入门 2 Rust 开发环境配置 Ru
  • 一年有多少节假日

    日历有 阳历 xff08 公历 xff09 和 阴历 xff08 农历 xff09 之分 每年都有法定节假日 xff0c 这些分成三类 双休 阳历节假日 阴历节假日 双休 1 xff09 周六和周日 2 2 天 阳历节假日 1 xff09

随机推荐

  • 走迷宫(bfs)

    给你一个 n 行 m 列的二维迷宫 39 S 39 表示起点 xff0c 39 T 39 表示终点 xff0c 39 39 表示墙壁 xff0c 39 39 表示平地 你需要从 39 S 39 出发走到 39 T 39 xff0c 每次只能
  • 计蒜客-蒜头君回家(bfs)

    蒜头君要回家 xff0c 但是他家的钥匙在他的朋友花椰妹手里 xff0c 他要先从花椰妹手里取得钥匙才能回到家 花椰妹告诉他 xff1a 你家的钥匙被我复制了很多个 xff0c 分别放在不同的地方 蒜头君希望能尽快回到家中 xff0c 他需
  • 互质数的个数(短除法分解质因数+欧拉函数)

    题意说明 xff1a 给出一个n xff0c 求1 n互质数的个数 include lt cstdio gt include lt cmath gt using namespace std int res 100000 int main i
  • arduino +ESP8266 网页WiFi控制

    首先几个问题 xff1a 1 xff0c 关于连线 xff0c 很简单 xff0c 直接ESP8266与arduino连接 xff0c 就五根线 如果没有弄好 xff0c 就单独调试一下 VCC xff0c CH PD连5v的 xff08
  • 蓝桥杯分考场

    历届试题 分考场 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 n个人参加某项特殊考试 为了公平 xff0c 要求任何两个认识的人不能分在同一个考场 求是少需要分几个考场才能满足条件 输入格式 第一行 xf
  • CCF_Markdown(正则表达式)

    试题编号 xff1a 201703 3试题名称 xff1a Markdown时间限制 xff1a 1 0s内存限制 xff1a 256 0MB问题描述 xff1a 问题描述 Markdown 是一种很流行的轻量级标记语言 xff08 lig
  • idea常用的插件

    1 lombok 省略get set方法 2 Alibaba Java Coding Guidelines 阿里的代码规范 3 Translation 谷歌中英文翻译工具 4 CodeGlance 代码迷你缩放图插件 xff0c 快速下拉拖
  • Hadoop windows本地环境安装

    hadoop使用java编写 xff0c 所以windows安装和java一样也需要配置环境变量 一 下载所需文件 JDK下载地址 xff0c jdk1 8下载Hadoop下载 xff0c hadoop下载 xff0c 进去后找到一个版本然
  • Gitlab的安装及使用

    1 GitLab概述 1 1 GitLab介绍 GitLab是利用Ruby on Rails一个开源的版本管理系统 xff0c 实现一个自托管的Git项目仓库 xff0c 可通过Web界面进行访问公开的或者私人项目 GitLab能够浏览源代
  • C语言例程:用二维数组实现矩阵转置

    用二维数组实现矩阵转置 本实例将输入的 3 4 矩阵转置为 4 3 矩阵 xff0c 并输出结果 通过本实例 xff0c 可以学习如何使用二 维数组 实例解析 二维数组的定义 二维数组定义的一般形式为 xff1a 第一部分 基础篇 X227
  • C++头文件的相互引用问题(#include” xxx“使用)

    188条消息 C C 43 43 头文件的引用问题 xff08 include使用 xff09 保护大苹果 CSDN博客 c 43 43 include头文件
  • 树莓派设置自动连接无线网络

    树莓派开机后自动连接无线网络方法 xff0c 亲测有效 1 在任意方法 xff08 无线或有线 xff09 已经连接树莓派的基础上 xff0c 执行该命令 xff0c 意思是编辑wpa supplicant conf这个文件 内容如下 xf
  • 常用快捷键(1)----Windows组合键

    单个的Windows键是打开和隐藏开始菜单 xff0c 功能与 Esc 43 Ctrl 组合键功能相同 下面是一些常用的Windows组合键 xff1a 1 快捷键 xff1a Windows 43 Shift 43 S 功能 xff1a
  • android 获取唯一Id,小小总结一下。仅供参考

    1 获取imei xff1a 前言 xff1a 因传统的移动终端设备标识如国际移动设备识别码 xff08 IMEI xff09 等已被部分国家认定为用户隐私的一部分 xff0c 并存在被篡改和冒用的风险 xff0c 所以在Android 1
  • xib中添加自定义可编辑属性

    IOS开发中 xff0c 有些人喜欢使用xib来进行项目的开发 xff0c 使用xib可以使界面可视化 xff0c 很多控件的属性设置都可以在 xib 中设置 xff0c 减少了代码量 xff1b 同时不用一遍遍的运行程序看效果 xff0c
  • STM32使用寄存器工程模板点亮一个LED灯

    1 环境说明 xff08 1 xff09 使用的是普中STM32F103开发板 xff08 2 xff09 keil 5软件 2 目的 点亮开发板上的LED1灯 3 步骤 xff08 1 xff09 定义一系列寄存器的宏 span clas
  • 结构体数组的使用

    测试源码 span class token macro property span class token directive keyword include span span class token string lt stdio h
  • string字符串拼接

    功能描述 实现在字符串末尾拼接字符串 函数原型 xff1a string amp operator 43 61 const char str 重载 43 61 操作符string amp operator 43 61 const char
  • 千万不要在TX2上安装Qt6

    失败 xff01 Nvidia TX2安装Qt6 和qtCreator7 手把手一步步 千万不要想在TX2上安装QT6 xff01 XCB缺失几乎无解 xff0c 如果有大佬可以指导一下 最开始准备使用交叉编译的方案给TX2写程序 因为台式
  • 最新WSL2 ubuntu环境 cuda,教程,适用于40系显卡

    实验环境 xff1a ubuntu2204 ubuntu1804 xff0c 最新4060笔记本电脑 xff0c 自我觉得是目前比较好用的搭配 xff1a wsl2 43 gnome 43 wsl中的pycharm xff0c 写的很全 x