Windows11使用WSL Ubuntu搭建paddle的GPU环境
Windows11使用WSL Ubuntu搭建paddle的GPU环境
最近升级到了Windows11,突然有个大胆的想法:在Windows11上安装WSL,将所有开发环境安装到WSL中。这样就能在windows各种QQ/微信/Steam玩的飞起,又能在Linux中敲代码。
当前时间:2022-08-13,本文章中所有步骤都是根据官网的安装方法,如果时间比较长了,可能需要切换到最新的官方文档。
本文章为安装成功后的分享,可以放心参考。
paddle的坑
- 目前不兼容ubuntu22.04,查资料说是paddle不支持高版本gcc
 - 直接运行paddle提供的docker镜像是可行,但是docker内的python版本过低(python3.7),导致matplotlib无法安装,如果不需要个别依赖包可以不用折腾
 - 吐槽下,ubuntu22.04都发布半年了,还做不到兼容,天天吹流弊有个锤子用
 
版本/型号
| 项目 | 型号 | 
|---|---|
| 当前时间 | 2022-08-13 | 
| CPU | Intel i7-11700 | 
| 显卡 | GTX 1050 Ti | 
| Windows 11 64位 | 专业版 21H2 | 
| WSL2 | 5.10.102.1 | 
| Ubuntu | 22.04 | 
| CUDA | 11.7 | 
| cuDNN | 8.5.0.* | 
疑问
在完成安装前,自己对WSL也有疑问的地方,可能大家也有类似的疑问,所以列举出来。
疑问1:WSL就是指Windows中运行的Linux系统吗?
- WSL是个工具,用于运行/管理子系统(如:Ubuntu/Centos)
 - (为了方便表述,下面用ubuntu指代其中一个子系统)
 
疑问2:WSL吃资源吗?
- WSL工具本身不吃资源,但是运行子系统需要吃资源,毕竟多跑了个系统
 
疑问3:WSL安装后一直在后台运行吃资源吗?
- WSL是个工具,且子系统不会自启动(默认情况),还可以手动。即不使用的时候不吃资源
 
疑问4:docker要Windows中安装,还是要在ubuntu中安装?
- 在Windows中安装Docker Desktop相当于在WSL下又安装了一个跑docker的子系统
 - 在Ubuntu中安装按照docker服务器安装的步骤安装即可
 - 推荐在ubuntu中安装,更加节省内存
 - 以下数据是在"任务管理器"中的"性能"页面观察得到,数据并不严谨,不排除期间开了其他软件等影响,但内存使用量悬殊不影响结果判断:
- 未打开所有子系统,内存使用:4.5G
 - 打开ubuntu20,内存使用:5.8G
 - 打开Ubuntu20内的docker,内存使用:6.1G
 - 打开ubuntu20,docker子系统(安装在windows上),内存使用:10.7G
 - 原因:安装在windows上的docker需要一个子系统来跑dockers服务,而在ubuntu中安装只是多运行了一个服务,节省了系统运行环境需要的资源
 
 
疑问5:在windows中安装了驱动,ubuntu中还需要安装显卡驱动/CUDA/cuDNN吗?
- ubuntu中不需要再安装显卡驱动,但是需要安装CUDA/cuDNN
 
总结
- WSL是个子系统管理工具(可以类比为docker运行时)
 - 从WSL或微软商店安装的Ubuntu/Centos才是真正的子系统(可以类比为docker的容器)
 - Docker最好安装在子系统中(节省内存)
 
步骤
Windows11安装WSL
打开"Windows功能",将"Hyper-V"/"适用于Linux的Windows子系统"/"虚拟平台"都勾选上,重启
windows系统就自动安装了wsl工具
在微软商店搜索"Ubuntu",直接点击安装等待完成(这里选择ubuntu20.04,因为paddle不兼容ubuntu22,因为)
打开"ubuntu20.04",如果如下报错
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel
Press any key to continue...
- 请更新下WSL内核并重启即可
 
wsl --update
配置ubuntu20.04的环境
- 进入ubuntu内部
 - 安装miniconda当作python管理工具
 - 更换"ubuntu"/"conda"/"pypi"国内镜像源
 - 安装Dockers,注意是安装Dockers Engine,而不是Docker Desktop
 
驱动/CUDA/cuDNN关系
| 应用层到硬件的分层结构 | 
|---|
| TensorRT for Inference: Paddle | 
| GPU Accelerated SDKcuDNN | 
| CUDA ToolKits | 
| GPU Driver | 
| OS | 
| GPU Computing Servers | 
安装CUDA
- 提前安装好miniconda(安装命令会自动配置conda环境)
 - 打开上面的地址,访问比较慢,刷不出来多试几次,环境不同安装的命令也不同,选择好参数后会有安装命令,照抄命令就可以了
 - 有些文章说安装cuda后要改环境变量,我提前装好了miniconda,所以安装好自动配置了,不需要改,打开"~/.bashrc"最下方可以看到配置的内容
 - 下面以我选择的参数"Linux"/"x86_64"/"Ubuntu"/"20.04"/"deb(network)",生成的代码如下:
 
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda
- 在执行最后一个命令时,我遇到了个报错,根据提示在命令后方加上"--fix-missing"即可,大家安装的时候注意观察安装过程中是否有报错
 
自动添加的环境变量如下,本人的登录用户名为"x",所以每个人安装的路径都有区别
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/x/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/x/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/home/x/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/x/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
安装cuDNN
- 注意看里面的目录,自行选择对应的系统和安装方式
 - 我选择的是ubuntu的网络安装,执行的代码如下:
 
# 由于文档中的地址使用了变量,用export方式赋值
export OS=ubuntu2004
export cudnn_version=8.5.0.*
export cuda_version=cuda11.7
# 安装
wget https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/cuda-${OS}.pin 
sudo mv cuda-${OS}.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /"
sudo apt-get update
sudo apt-get install libcudnn8=${cudnn_version}-1+${cuda_version}
sudo apt-get install libcudnn8-dev=${cudnn_version}-1+${cuda_version}
完成
上面完成了所有配置,测试下是否成功
- 进入ubuntu
 - 进入conda环境
 - 打开python命令行
 
import paddle
paddle.utils.run_check()
其他
- ubuntu中可以直接访问windows中的文件,挂载在"/mnt"目录下
 - WSL搭配vscode使用非常顺滑,可以参考VsCode轻松使用docker容器 视频,将"Remote SSH"插件改为"Remote WSL"即可,操作大同小异
 
Windows11使用WSL Ubuntu搭建paddle的GPU环境的更多相关文章
- linux(ubuntu) 搭建java程序运行环境
		
一:简介 ubuntu 系统的和linux差不多,我们需要在系统上搭建java程序运行环境,需要安装jdk,mysql这两个软件,tomcat是绿色版,直接通过taz -zxvf tomcat 就可以 ...
 - Ubuntu搭建Spring源码环境常见问题
		
在一心想要学习Spring框架源码时,我们会遇到很多麻烦的问题.开始本文前,你只需要拥有一个装好IDEA的Ubuntu系统就可以愉快启程了.如果还没有IDEA,可以参考在Ubuntu上安装Intell ...
 - 最新30系显卡搭建paddle飞浆环境|含CUDA下载安装
		
下载CUDA 通过这个链接可以下载任意CUDA版本:CUDA Toolkit Archive | NVIDIA Developer 我下载的是这一个:https://developer.downloa ...
 - Ubuntu搭建Ruby On Rail环境
		
受不了Ruby在Windows上的执行等待,转战至ubuntu linux下使用,为方便不同版本ruby的使用,采用了rvm安装Ruby on rails环境. 安装rvm //获取认证 gpg -- ...
 - Ubuntu搭建Ruby on Rails环境
		
安装Ruby 由于Ubuntu的apt包管理器的ruby版本过旧,故考虑从源码编译安装.这里以安装ruby2.3.0为例: sudo apt-get install build-essential z ...
 - ubuntu 搭建jdk1.8运行环境
		
参照了:https://blog.csdn.net/smile_from_2015/article/details/80056297 首先下载linux对应的安装包 下载地址:http://www.o ...
 - ubuntu 搭建Mercurial 服务(nginx)
		
ubuntu 搭建Mercurial 服务(nginx) 环境:ubuntu 12.05 Mercurial 步骤: (1)安装nginx 和 Mercurial: sudo apt-get ins ...
 - 真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用)【转】
		
本文转载自:https://blog.csdn.net/u010801439/article/details/80483036 ubuntu 18.04 安装GPU +CUDA+cuDNN : 目前, ...
 - 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台
		
最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...
 - ubuntu搭建DNS
		
ubuntu搭建DNS 一. bind简介: BIND是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种: *域名服务器 *D ...
 
随机推荐
- Java学习笔记 :2021年12月31日 上午
			
Java学习笔记 :2021年12月31日 上午 目录 Java学习笔记 :2021年12月31日 上午 关于计算机语言 1.关于语言的分类 2.小结 关于Java语言的基础语法 1.主方法 2.其他 ...
 - Winform DataGridViewTextBoxCell 编辑添加右键菜单,编辑选中文本
			
如上是我们使用DataGridView时,编辑单元格右键会出现系统菜单.现在我们添加自己的右键菜单,并可以操作选中文字. DataGridViewTextBoxCell: DataGridViewTe ...
 - Aspose的jar破解文档
			
Aspose的jar破解文档 1.引入jar包 方式一: 1.在pom.xml配置aspose的jar包仓库 <repositories> <repository> <i ...
 - DVWA靶场实战(十一)——XSS(Reflected)
			
DVWA靶场实战(十一) 十一.XSS(Reflected): 1.漏洞原理: XSS被称为跨站脚本攻击(Cross Site Script),而Reflected被称作反射型XSS.不同于DOM和S ...
 - Collection集合常用功能-Iterator接口介绍
			
Collection集合常用功能 Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合.方法如下︰ ...
 - 【Redis场景4】单机环境下秒杀问题
			
单机环境下的秒杀问题 全局唯一ID 为什么要使用全局唯一ID: 当用户抢购时,就会生成订单并保存到订单表中,而订单表如果使用数据库自增ID就存在一些问题: 受单表数据量的限制 id的规律性太明显 场景 ...
 - 12月13日内容总结——路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、request对象获取文件、视图层FBV与CBV的源码剖析、模版层简介
			
目录 一.路由分发 二.名称空间 方式1:名称空间 方式2:别名不冲突即可 三.虚拟环境 pycharm创建虚拟环境 命令行的方式创建虚拟环境: 创建虚拟环境的命令 激活与关闭虚拟环境 四.视图层之必 ...
 - Vue31 消息订阅和发布
			
1 简介 组件之间的通信除了使用事件总线之外,还可以使用一些插件来通过消息的订阅和发布来实现.pubsub-js就是一个不错的选择. 2 使用 2.1 安装 npm i pubsub-js # 或 y ...
 - 【已解决】SQL2012启动时报错:cannot find one or more cpmponents
			
下载Microsoft Visual Studio 2010 Shell(Isolate)-CHS安装即可 下载地址:Visual Studio 独立 Shell 下载及安装:点击同意许可,选择vs2 ...
 - Docker自建仓库搭建记录
			
https://blog.csdn.net/u011943534/article/details/81331231 https://blog.csdn.net/u013165156/article/d ...