在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置

2023-05-16

目录

  • 引言
  • 1. 确认Windows 10版本
  • 2. 在Windows上安装WSL2
  • 3. 在Windows上安装CUDA on WSL驱动
  • 4. 在WSL2中安装CUDA Toolkit
  • 3. 测试CUDA是否能在WSL2中运作
  • 4. 安装Gnome图形界面
  • 其他问题


引言

鉴于在Linux环境下运行深度学习代码,并使用PyCharm调试的需求,原本打算安装Ubuntu双系统,但了解到WSL2已经支持使用GPU进行CUDA运算,故考虑使用WSL2实现上述需求。本文记录了在Windows 10下安装WSL2,并配置Gnome图形界面和CUDA的过程。


1. 确认Windows 10版本

需要注意的是WSL2和CUDA Toolkit对Windows的版本要求并不是完全相同的。即便能够成功安装WSL2,也不一定可以成功使用CUDA。

根据微软官方文档的要求,在x64机器上安装WSL2需要Windows版本 1903 或以上,内部版本 18362 或以上。
在这里插入图片描述

而根据NVIDIA官方文档的要求,安装适用于WSL2的CUDA Toolkit,需要安装Windows Insider Preview版本并切换到Fast Ring通道。版本要求20145或以上,但对家庭版/专业版则没有要求。
在这里插入图片描述

总体来看只要达到了安装CUDA on WSL的版本要求,就达到了安装WSL2的要求

2. 在Windows上安装WSL2

这一步参考微软官方文档完成。

3. 在Windows上安装CUDA on WSL驱动

在WSL2中使用GPU,并不需要在Linux内安装驱动,而是需要在Windows中安装特定版本的驱动。CUDA on WSL驱动程序的下载页面,点进去后根据显卡型号选择驱动。
在这里插入图片描述

4. 在WSL2中安装CUDA Toolkit

执行下列命令安装CUDA Toolkit。下列命令中的URL适用于Ubuntu 18.04版本,如果你安装的是其他版本需要修改命令中的URL

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
sudo apt-get update
sudo apt-get install -y cuda-toolkit-11-0

注意安装过程可能遇到一些网络问题:

  • 安装过程中建议关闭Windows的热点功能,否则执行到sudo apt-get update和后面的步骤时,可能会遇到网络错误。
  • 如果你连接的是校园网,可能在执行sudo apt-get等命令时遇到下列报错。这时候可以尝试换一个网络环境,例如连手机热点等。在这里插入图片描述
  • 在执行sudo apt-get install -y cuda-toolkit-11-0后,你可能会遇到这样的报错:在这里插入图片描述
    这可能是安装源导致的问题,可以尝试更换源来解决。

3. 测试CUDA是否能在WSL2中运作

使用PyTorch中的torch.cuda.is_available()测试,如返回True说明可以运行。
在这里插入图片描述

4. 安装Gnome图形界面

这一部分参考了这篇文章。
首先,在Windows下,安装VcXsrv。
然后,在Ubuntu中,安装Ubuntu Desktop:

sudo apt install ubuntu-desktop

安装完毕后,输入sudo vi ~/.bashrc,在文件末尾添加:

export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export XDG_SESSION_TYPE=x11

保存后退出,并使用source ~/.bashrc应用修改。

之后每次启动桌面的步骤为:

  1. 在Windows中启动Ubuntu CLI
  2. 在Windows中启动XLaunch,每一步设置如下:

    (Display Number改为0,窗口模式根据需求选择,但Multiple Windows似乎无法显示)

在这里插入图片描述
选Start no client
在这里插入图片描述
勾选Disable access control

  1. 在Ubuntu中输入sudo service dbus restart (建议每次重启桌面都执行一次该命令,重启dbus服务)
  2. 在Ubuntu中输入gnome-session

完成后即可在VcXsrv窗口看到Ubuntu桌面。
在这里插入图片描述
注意!如果你同时在使用一些用于上Google的那种软件,注意修改SOCKS5端口,否则会造成端口冲突而导致VcXsrv和这种软件二者无法同时运行。VcXsrv无法运行的报错如下:
在这里插入图片描述

魔法软件无法运行的报错如下:
在这里插入图片描述
至此环境配置工作基本完成。


其他问题

  1. 目前的Windows预览版更新后存在一个无法正常运行CUDA程序的bug,会导致报错如下:

在这里插入图片描述
GitHub上已经有人提了issue,目前版本(20231)还是没有解决。

  1. 启动Ubuntu桌面后,发生过离开电脑一段时间,回来以后电脑黑屏但还在运行而且能响应的情况。猜测是Ubuntu桌面电源设置中的自动息屏导致的,建议把这个设置改为Never:
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置 的相关文章

  • node.js 开发笔记

    依赖 package json里 dependencies xff08 运行时依赖 xff09 devDependencies xff08 常用 xff0c 开发时依赖 xff0c 运行不依赖 xff09 peerDependencies
  • React Native 混合ios android开发 及常用框架

    英文文档 xff1a Setting up the development environment React Native 中文文档 xff1a 集成到现有原生应用 React Native 中文网 ios 在集成过程中 xff0c 需要
  • React native RN 开发实例

    多入口加载方式 React Native 混合开发多入口加载方式 知乎 initialProperties 官方文档 xff1a React Navigation moduleName 案例 xff1a GitHub hcn1519 Rea
  • vscode 正则表达式查找替换

    参考 可以用在 VS Code 中的正则表达式小技巧 掘金 正则匹配中文数字 小豆芽菜的博客 CSDN博客 案例 想在 七百零四章 前加入 第 条件 搜索条件 注意底下章后面有空格 xff0c 这个是根据我的原文来定制的 xff0c 原文里
  • swift xcode 宏定义ifdef debug

    DEBUG 代码中 if DEBUG print 34 file as NSString lastPathComponent function 34 endif
  • Swift UIView SnapKit updateConstraints 如何做动画(animate animation)和 cornerRadius

    动画 UIView animate withDuration 0 3 let newWidth 61 self progressBgView width 2 progressValue self progressView snp updat
  • Linux网络命令

    目录 一 网络配置命令 1 1 ifconfig命令 查看网络接口信息 二 hostname 查看主机名称 2 1 查看主机名 2 2 修改主机名称 2 3 永久修改主机名 xff0c 修改后重启生效 三 route 查看路由表条目 四 n
  • Xcode 14.3 Archive AFNetworking.framework failed: No such file or directory

    参考 Xcode 14 3 Archive 失败 掘金 项目搜索 source 61 34 readlink 34 source 34 34 替换为 xff1a source 61 34 readlink f 34 source 34 34
  • xcode Swift Log CocoaLumberjack

    参考 iOS CocoaLumberJack日志库集成 简书 logging How to capture Device Logs in iOS during Runtime into a file in Documents Directo
  • UITabbar 颜色 color

    if available iOS 15 let tabBarAppearance 61 UITabBarAppearance tabBarAppearance backgroundColor 61 white tabBarAppearanc
  • Pyinstaller 打包 Tkinter 程序时引入图标解决方法

    Pyinstaller 打包 Tkinter 程序时引入图标解决方法 描述 在windows下开发python的gui程序时 多数使用pyinstaller py2exe等打包工具 在因为tkinter框架时 代码中使用iconbitmap
  • mysql基本操作

    修改字段属性 xff1a 修改字段属性 ALTER TABLE tb name MODIFY 字段名称 字段类型 完整性约束条件 将email字段 VARCHAR 50 修改成VARCHAR 200 注意 xff0c 修改时如果不带完整性约
  • <context:component-scan/>标签爆红

    lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt beans xmlns 61 34 http www springframework org schema beans 34
  • iOS exit函数深入浅出

    1 exit函数 C C 43 43 函数exit用来终止当前程序 xff0c 函数定义如下 xff1a void exit int status 官方说明如下 xff1a Terminates the process normally p
  • 前端妹子如何在 sqlserver 2008 中如何用自定义函数 解析json数据

    导航 前言 xff1a 开始干活 xff1a 0 预告1 首先先建立一个 通用的json解析自定义函数 xff08 这个代码是网络上找到的成熟代码 xff09 2 重点讲解一下 函数 parseJSON 的用法3 学会了函数 parseJS
  • ECS架构的思考

    最近在整理Demo代码 xff0c 遇到一个设计问题 xff0c 这个问题是transform组件到底放到哪里比较合适 xff1f 我们都知道逻辑 xff0c 物理 xff0c 渲染模块都会用到transform组件 比如渲染模块会将tra
  • 外网如何访问内网/局域网网站【内网穿透】

    在本地内网 局域网环境下搭建的网站 xff0c 正常情况下只能在同个局域网下访问 xff0c 想要实现外网用户也能够正常访问 xff0c 可以通过内网穿透来实现 做内网穿透 xff0c 无需公网IP xff0c 也无需进入到路由器配置 xf
  • 禁用nouveau

    sudo vim etc modprobe d blacklist conf 在最后两行添加 xff1a blacklist nouveau options nouveau modeset 61 0 禁用nouveau第三方驱动 xff0c
  • 使用win10自带的微软远程桌面,远程控制不同局域网的电脑【无需公网IP、无需进入路由器】

    在Windows环境下 xff0c 要实现远程桌面控制 xff0c 首推系统自带的微软远程桌面mstsc xff0c 不需要另外去下载第三方远程软件 不管设备是否在同个网络下 xff0c 都可以使用mstsc来实现远程连接 在同个局域网内远
  • 推荐一款永久免费不限流量的内网穿透软件

    文章目录 前言1 安装cpolar内网穿透1 1 windows系统1 2 Linux系统 2 创建隧道穿透内网端口2 1 cpolar web ui2 2 命令行创建隧道 3 配置固定二级子域名3 1 保留二级子域名3 2 配置二级子域名

随机推荐

  • 群晖nas免费内网穿透,实现外网异地远程访问

    文章目录 1 安装cpolar群晖套件2 打开cpolar群晖套件3 登录cpolar Web UI管理界面4 创建新隧道映射5 获取公网地址6 配置固定二级子域名6 1 保留一个二级子域名6 2 配置二级子域名 7 使用固定二级子域名远程
  • 永久免费的内网端口映射工具推荐【无公网IP】

    搭建了个游戏服务器 xff0c 想要让在不同网段下的朋友也可以连接想要在家远程桌面公司电脑想要在外远程访问本地电脑的web服务器想要在外远程访问NAS 一切的一切 xff0c 都需要公网IP的支持 但是目前IPV4资源的稀缺 xff0c 很
  • 免费内网穿透教程【无公网IP】

    文章目录 前言1 安装cpolar内网穿透工具1 1 Windows系统1 2 Linux系统1 3 macOS系统 2 创建隧道映射内网端口3 获取公网地址4 配置固定二级子域名4 1 保留一个二级子域名4 2 配置二级子域名 5 公网测
  • 内网穿透SSH远程连接家里的树莓派

    随着科技的进步和信息技术的发展 xff0c 我们身边出现了各种新奇的科技产品 xff0c 其中既有轻便易用的消费类电子产品 xff0c 也有更轻更小的硬件设备 而树莓派作为计算机学习设备 xff0c 经过多年发展 xff0c 已经获得了不俗
  • 推荐10款简单好用的免费内网穿透工具

    前言 远程办公越来越普遍 xff0c 但是如何应对在外远程桌面控制公司电脑 远程公司内网办公系统 调阅公司文件资料 远程公司内网服务器是个问题 而解决方案其实很简单 xff0c 做内网穿透就可以突破局域网的限制 xff0c 轻松实现公网访问
  • Java支付宝沙箱环境支付,官方Demo远程调试【内网穿透】

    文章目录 1 下载当面付demo2 修改配置文件3 打包成web服务4 局域网测试5 内网穿透6 测试公网访问7 配置二级子域名8 测试使用固定二级子域名访问 在沙箱环境调试支付SDK的时候 xff0c 往往沙箱环境部署在本地 xff0c
  • opencv内存不足问题(OpenCV Error: Insufficient memory)

    最近在用opencv自带的函数haartraining训练分类器 xff0c 之前用的图片是20 20 xff0c 能训练出分类器 xff0c 后来换成了80 86 xff0c 就报错了 xff0c 报的错误是内存不足 xff0c 于是 x
  • ffmpeg 4.2.2 实现mp4转avi(修改官方remuxing例子)

    最近想把ffmpeg官方例子过一遍 xff0c 达到初步了解ffmpeg的目的 xff0c 本文只是给自己一个记录 xff0c 也是在网上没有找到一样的文章 xff0c 发出来供大家指点 直接使用官方demo xff0c 把mp4转换成av
  • 12.bss段的初始化

    12 bss段的初始化 在C代码 xff1a 有初始化全局的数据段 xff0c 局部的栈 xff0c malloc部分的堆 xff0c 未初始化的全局的bss段 从上面的编译的信息知道 xff1a Bss段的起始地址 xff1a 00010
  • pandas学习之df.rename()

    pandas学习之df rename df rename 用于更改行列的标签 xff0c 即行列的索引 可以传入一个字典或者一个函数 在数据预处理中 xff0c 比较常用 官方文档 xff1a DataFrame rename self m
  • java8操作两个集合List

    public static void main String args List lt String gt list1 61 new ArrayList lt String gt list1 add 34 1 34 list1 add 34
  • Atcoder AGC005 题解

    A STring 用类似括号匹配的方法搞一下即可 span class token macro property span class token directive keyword include span span class toke
  • CentOS-7安装桌面环境

    CentOS 7安装桌面环境 CentOS 7安装桌面环境 CentOS 7安装Server with GUI 设置为开机从桌面环境启动 yum y group install 39 Server with GUI 39 systemctl
  • [软件注册]Sublime 3 激活/注册码(key)

    偶然发现了一种sublime激活方式 使用的sublime3 1 1版本 亲试有效 Step1 配置 host文件 推荐使用 switchhost软件 可以快速变更host span class hljs number 127 0 span
  • 测试git能否连接github

    welcome to my blog 使用以下命令进行测试 ssh T git 64 github com 出现报错 ssh dispatch run fatal Connection to 13 250 177 223 port 22 S
  • vtk中实现3D模型(读取文件)

    xff08 xff09 VTK 坐标系统及空间变换 窗口 视图分割 mb5fed73533dfa9的技术博客 51CTO博客 VTK学习 xff08 三 xff09 VTK读取序列图像 灰信网 xff08 软件开发博客聚合 xff09 读取
  • centos中安装Python2.7

    转载于 xff1a 秋水逸冰 CentOS 6 8安装Python2 7 13 查看当前系统中的 Python 版本 python version 返回 Python 2 6 6 为正常 检查 CentOS 版本 cat etc redha
  • 安装tar.gz文件(无configure文件)

    如何安装tar gz文件 xff08 以webstorm为例 xff09 1 获取root权限并输入密码 xff1a su root 2 进入有该文件的目录下 xff08 以我的为例 xff0c 具体看你的文件在哪里 xff09 cd 下载
  • 游戏服务端框架之业务线程模型

    请求消息绑定线程策略的选择 在上一篇文章中 我们看到 消息是直接在网络框架的io线程中处理的 这样做有一个非常严重的缺陷 如果业务处理比较耗时 那么io线程接受消息的速度就会下降 严重影响io的吞吐量 典型的 我们应该另起线程池 专门用于异
  • 在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置

    目录 引言1 确认Windows 10版本2 在Windows上安装WSL23 在Windows上安装CUDA on WSL驱动4 在WSL2中安装CUDA Toolkit3 测试CUDA是否能在WSL2中运作4 安装Gnome图形界面其他