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

目录

  • 引言
  • 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 或以上。
在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第1张图片

而根据NVIDIA官方文档的要求,安装适用于WSL2的CUDA Toolkit,需要安装Windows Insider Preview版本并切换到Fast Ring通道。版本要求20145或以上,但对家庭版/专业版则没有要求。
在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第2张图片

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

2. 在Windows上安装WSL2

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

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

在WSL2中使用GPU,并不需要在Linux内安装驱动,而是需要在Windows中安装特定版本的驱动。CUDA on WSL驱动程序的下载页面,点进去后根据显卡型号选择驱动。
在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第3张图片

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后,你可能会遇到这样的报错:在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第4张图片
    这可能是安装源导致的问题,可以尝试更换源来解决。

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

使用PyTorch中的torch.cuda.is_available()测试,如返回True说明可以运行。
在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第5张图片

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,每一步设置如下:
    在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第6张图片
    (Display Number改为0,窗口模式根据需求选择,但Multiple Windows似乎无法显示)

在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第7张图片
选Start no client
在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第8张图片
勾选Disable access control

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

完成后即可在VcXsrv窗口看到Ubuntu桌面。
在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第9张图片
注意!如果你同时在使用一些用于上Google的那种软件,注意修改SOCKS5端口,否则会造成端口冲突而导致VcXsrv和这种软件二者无法同时运行。VcXsrv无法运行的报错如下:
在这里插入图片描述

魔法软件无法运行的报错如下:
在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第10张图片
至此环境配置工作基本完成。


其他问题

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

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

  1. 启动Ubuntu桌面后,发生过离开电脑一段时间,回来以后电脑黑屏但还在运行而且能响应的情况。猜测是Ubuntu桌面电源设置中的自动息屏导致的,建议把这个设置改为Never:
    在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置_第11张图片

你可能感兴趣的:(操作实录,ubuntu,nvidia,cuda)