Windows Subsystem for Linux (WSL)是适用于 Linux 的 Windows 子系统可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。
相关资料 {#相关资料}
- 中文文档:https://docs.microsoft.com/zh-cn/windows/wsl/
- win10安装文档:https://docs.microsoft.com/en-us/windows/wsl/install-win10
- Nvidia WSL 支持文档:https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract
- Nvidia WSL 开发文档:https://developer.nvidia.com/cuda/wsl
简介 {#简介}
Windows Linux子系统(WSL)是Windows 10的一项功能,使用户可以直接在Windows上运行本机Linux命令行工具。 WSL是一个容器化的环境,用户可以在其中从Windows 10 Shell的命令行运行Linux本机应用程序,而无需双启动环境的复杂性。在内部,WSL与Microsoft Windows操作系统紧密集成,从而使其可以与传统的Windows桌面和现代商店应用程序一起运行Linux应用程序。
- 借助WSL 2和GPU半虚拟化技术,Microsoft使开发人员能够在Windows上运行GPU加速的应用程序
安装步骤 {#安装步骤}
以下文档描述了在WSL 2环境中开始运行CUDA应用程序或容器的工作流程
注意:从开普勒架构开始,在GPU上启用了WSL 2上的CUDA。但是,官方建议在Turing或更新的体系结构上的WSL 2上运行CUDA。
- 从Microsoft Windows Insider程序安装最新版本
- 为WSL2安装 NVIDIA 驱动
- 安装WSL2
- 安装Linux发行版
- 为WSL配置CUDA环境
- 为WSL安装 nvidia-docker
从Microsoft Windows Insider程序安装最新版本 {#从Microsoft-Windows-Insider程序安装最新版本}
注册加入微软Windows内部人员计划 {#注册加入微软Windows内部人员计划}
- 登录微软账号
- 注册成功
安装 Win 10 的最新版本 {#安装-Win-10-的最新版本}
查看Windows 10 版本 {#查看Windows-10-版本}
- Win + R 在运行中输入命令 winver
- 可以看到我的系统版本 1919 内部版本18363,这是不够的
- 需要版本2004以上 内部版本19041 或更高
加入Windows预览体验计划 {#加入Windows预览体验计划}
Win+S
搜索预览体验计划
如果没有这个开始按钮,一片空白,请移步解决Windows 预览体验计划没有用户选择界面的问题
-
然后链接到自己的微软账户
-
CUDA建议使用Dev渠道,以获得最新的更新与最高的cuda性能,此处我们选择Dev渠道:
求稳的用户建议选择Beat渠道
- 重启计算机
- 成功加入预览成员
进行 Windows 更新 {#进行-Windows-更新}
Win+S
搜索windows更新
- 开启高级选项中的
更新Windows时接收其他Microsoft产品的更新
以更新Linux内核
- 更新吧
这个更新可能需要分步
也就是一次重启更新一部分文件
需要不停更新,直到无新可更
更新后检查Windows 版本 {#更新后检查Windows-版本}
- win + R 命令 winver
- Beta 渠道更新结果:
- Dev渠道更新结果
21364.1已经超过了CUDA建议的21332内部版本号
检查历史更新记录 {#检查历史更新记录}
- 在
Windows 更新
面板中查看更新历史记录
如果没有 Linux 内核更新请返回开启
更新Windows时接收其他Microsoft产品的更新
开关CUDA建议Linux内核版本 5.4.91+获得最好性能,当前没有达到,应该也是够用的
安装 NVIDIA 驱动 {#安装-NVIDIA-驱动}
从WSL页面CUDA的下载部分下载NVIDIA驱动程序。根据您系统中的NVIDIA GPU的类型选择合适的驱动程序-GeForce和Quadro。
- 官网链接: CUDA on WSL
下载驱动 {#下载驱动}
- 选择自己的驱动类型
-
登录英伟达账号
-
下载驱动
安装驱动 {#安装驱动}
- 使用可执行文件安装驱动程序,这是我们需要安装的唯一驱动程序。
DirectX WSL驱动程序会与其他驱动程序组件一起自动安装,因此不需要其他操作。该驱动程序通过支持DX12 API在WSL2.0上启用图形。在WSL上具有DirectML支持的TensorFlow将获得用于训练和推理工作量的NV GPU硬件加速。
更多信息:https://docs.microsoft.com/en-us/windows/win32/direct3d12/gpu-tensorflow-wsl
查看驱动版本 {#查看驱动版本}
- cmd 运行
nvidia-smi
官方提醒:
- 不要在WSL中安装任何Linux显示驱动程序。 Windows显示驱动程序将同时安装用于本机Windows和WSL支持的常规驱动程序组件。
- NVIDIA了解到在移动平台上报告的特定安装问题,该问题在2020年11月16日发布了WIP驱动程序465.12。已知的解决方法是在系统启动时从设备管理器中禁用和重新启用GPU适配器。我们正在努力解决此问题,并将很快提供更新的驱动程序。
安装 WSL 2 {#安装-WSL-2}
安装 WSL 1 {#安装-WSL-1}
现在的我们有三种方法安装WSL 1
-
使用简化安装命令
此方法需要有三个前提:
- 加入 Windows 预览体验计划
- 安装 Windows 10 的预览版(OS 版本 20262 或更高版本)。
- 使用管理员特权打开命令行窗口
-
控制面板
-->程序与功能
-->启动或关闭Windows功能
勾选适用于Linux的Windows子系统
-
或使用管理员权限打开powershell,输入命令:
此时为了成功安装 WSL 事实上需要重启电脑,但是升级 WSL2 还需要重启一次,所以此处可以选择等会再重启
开启虚拟化功能 {#开启虚拟化功能}
有两种方法完成开启
-
管理员权限开启 powershell,执行命令:
-
控制面板
-->程序与功能
-->启动或关闭Windows功能
勾选虚拟机平台
- 执行上述之一的步骤后,重启计算机,完成 WSL 安装并更新到 WSL 2
开启Hyper-V {#开启Hyper-V}
控制面板
-->程序与功能
-->启动或关闭Windows功能
勾选Hyper-V
选项。
在BIOS中开启虚拟化功能 {#在BIOS中开启虚拟化功能}
下载Linux内核更新包 {#下载Linux内核更新包}
如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:
systeminfo
系统类型可以看到本机基于 x64 需要下载x64包
-
运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择"是"以批准此安装。)
-
如果提示当前WSL版本更新就忽略这个包吧
将 WSL 2 设置为默认版本 {#将-WSL-2-设置为默认版本}
- 打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
查看 wsl 版本 {#查看-wsl-版本}
- 输出:
由于我之前安装了wsl1的ubuntu,列表中有一个Version为1的开发版
安装Linux发行版 {#安装Linux发行版}
安装Linux {#安装Linux}
- 选择自己需要的Linux发行版:
事实上我尝试了 16.04和18.04的ubuntu 均出现安装CUDA时闪退的问题,没有解决
换成了20.04 顺利安装CUDA Linux 分发版链接
-
在分发版的页面中,选择"获取"
-
进入到Microsoft Store 获取发行版,我安装成功了的是20.04版
安装 Windows Terminal (可选) {#安装-Windows-Terminal-可选}
Windows Terminal启用多个选项卡(在多个Linux命令行,Windows命令提示符,PowerShell,Azure CLI等之间快速切换),创建自定义键绑定(用于打开或关闭选项卡的快捷键,复制+粘贴等),使用搜索功能和自定义主题(配色方案,字体样式和大小,背景图像/模糊/透明度)
- 和 Xshell 差不多感觉
测试 Linux {#测试-Linux}
- 在Microsoft Store 或开始菜单搜索 Ubuntu 启动 Ubuntu 终端
说明发行版正常运行
检查发行版WSL版本 {#检查发行版WSL版本}
- 在powershell中输入命令:
-->
- 显示VERSION为2,表明WSL2发行版安装成功
为WSL配置CUDA环境 {#为WSL配置CUDA环境}
当前CUDA WSL仅对Ubuntu 做了支持
恰好我装的发行版是Ubuntu,需要安装 WSL-Ubuntu 的CUDA
- 当前支持WSL的CUDA最早版本为11.1
- 我安装CUDA成功的发行版是20.04(16.04和18.04均失败了,原因还没有找到)
Ubuntu 18.04 {#Ubuntu-18-04}
- 这个版本受到CUDA官方眷顾,官网直接给出了安装命令
- 安装WSL2 的CUDA
事实上,我并没有运行成功,所以个人建议用下面的安装方法
Ubuntu 16.04 或其他Ubuntu版本 {#Ubuntu-16-04-或其他Ubuntu版本}
- 使用命令:
- 或下载 runfile(local)
下载完成后
测试CUDA {#测试CUDA}
注意此时是没有 nvidia-smi的,因为没有在WSL中安装驱动,驱动是在Win中装的
-
nvcc
-
cuda sample
- 使用cuda sample的
1_Utilities
- 输出
- 使用cuda sample的
为WSL安装 nvidia-docker {#为WSL安装-nvidia-docker}
安装docker {#安装docker}
- 检查docker是否安装成功
安装nvidia-docker2 {#安装nvidia-docker2}
从nvidia-docker2 v2.3和基础运行库(libnvidia-container> = 1.2.0-rc.1)开始,为WSL 2提供支持。
- 检查nvidia-docker是否安装成功
参考资料 {#参考资料}
- https://docs.microsoft.com/zh-cn/windows/wsl/
- https://docs.microsoft.com/en-us/windows/wsl/install-win10
- https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract
- https://developer.nvidia.com/cuda/wsl
- http://www.xitongtang.com/class/win10/25354.html
- https://blog.csdn.net/huiruwei1020/article/details/107551106?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-5.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-5.nonecase&request_id=5f209e2a9cc79f6252ce650a
- https://www.cnblogs.com/xiangsui/p/14258385.html
- https://blog.csdn.net/fleaxin/article/details/108911522
文章链接:
https://www.zywvvd.com/notes/system/windows/about-wsl/wsl-build/wsl-build/