WSL2使用cuda

2023-11-10

在微软最新发布的 Windows Insider 预览版本中,WSL2 获得了 GPU 计算支持。这意味着 Linux 二进制文件可以利用 GPU 资源,在 WSL 中进行机器学习、AI 开发或是数据科学等工作。微软在今年五月份的 Build 2020 大会上宣布了 WSL 对GPU 计算的支持,对这项功能的需求在社区中一直拥有很高的呼声。目前,需要在WSL中启用GPU支持需要加入Windows 预览版 SDK,以下为具体步骤。
原文转载于:https://blog.csdn.net/qq_20291997/article/details/106897324#comments_13435238

1.安装预览版系统

打开 “设置”-“更新和安全”-“windows预览体验计划” 选择加入,随后保存并按照提示重启,随后检查更新即可自动安装最新的快速预览版系统。
在这里插入图片描述

请务必确保win版本高于20150,可在运行(win+R)中执行winver进行确认,我的版本是20231。
在这里插入图片描述

2.安装预览版驱动

请勿在 WSL 中安装任何 Linux 显示驱动程序。Windows 显示驱动程序将同时安装本机 Windows 和 WSL 支持的常规驱动程序组件。
英伟达下载与安装支持WSL的GPU驱动。
在这里插入图片描述

记得按照自己的GPU产品选择对应的驱动(该步骤需要Nvidia账户,我下载的是Geforce的驱动),下载后安装即可。
在这里插入图片描述

3.安装WSL2

确保自己安装并启用了WSL2。

  1. 以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

随后重启即可。
2. 将 WSL 2 设置为默认版本,以管理员身份打开 PowerShell 并运行:

wsl --set-default-version 2

ps: 若提示"WSL 2 需要更新其内核组件”。下载并安装WSL 2 Linux 内核
3. 随后进入微软商店下载并安装对应的Linux版本即可。或者前往在此选择具体Linux版本。
在这里插入图片描述

注:WSL必须安装在系统分区中。如果之前修改到了其它分区,请在下载安装对应Linux之前在win系统设置-系统-存储-更改新内容的保存设置-将新应用保存到…中选择对应系统分区,随后再进行安装。
5. 验证
请务必验证安装了WSL2(特别是以往就安装了WSL的电脑),以管理员身份打开 PowerShell 并运行:

wsl --l --v

如果返回的结果中version下的值为2,WSL2就安装成功了。
在这里插入图片描述

4.配置环境

更新:在WSL2中配置Cuda
我说的时不要安装任何Linux显示驱动程序,必要的Cuda之类还是要自己安装的,以下为具体步骤:

安装编译环境

该步骤非必须,可以先尝试安装cuda,提示缺少编译器无法正常安装再进行该步骤

sudo apt update
sudo apt install build-essential

下载cuda包
前往Nvidia官网下载对应的cuda包,自己用什么版本就下什么版本。
在这里插入图片描述

如果需要使用tensorRT加速的话个人建议最好是下载cuda10.2的版本

安装cuda

安装cuda时不安装驱动,把“X”选项去掉就行。
在这里插入图片描述

安装后一定有如下提示,Driver: Not Selected
在这里插入图片描述
设置环境变量

在主目录下的~/.bashrc文件添加如下路径:

sudo su -
vim ~/.bashrc

末尾添加并保存:

export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc

如果提示缺少相应的依赖库,直接执行如下代码自动安装相应的依赖库

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

查看cuda是否安装成功:

nvcc -V

在这里插入图片描述

安装cudnn

安装cudnn的时候也需要登录Nvidia账号,直接下载:cuDNN Library for Linux (x86)

在这里插入图片描述
然后打开终端执行:

tar -zxvf cudnn-10.2-linux-x64-v8.0.4.30.tgz
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/
sudo cp  cuda/include/cudnn.h /usr/local/cuda-10.1/include/

为所有用户设置读取权限:

sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*

查看 CUDNN 是否安装成功:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

安装pytorch

进入pytorch官网,下载安装包:
在这里插入图片描述
我选择pip安装:

pip3 install torch torchvision

最终

最终可以调用GPU训练了。
注意:如何你的windows预览版是20150~20210之间的版本是没问题的,如果你的是20210版本之上是无法使用cuda版本,报以下错误,windows升级到最新版本20236以上就解决了。
在这里插入图片描述

PS:NVIDIA官方帮助文档:https://docs.nvidia.com/cuda/wsl-user-guide/index.html#installing-nvidia-drivers

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

WSL2使用cuda 的相关文章

  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 使用 PM2 将节点作为服务运行 - 连接被拒绝

    我正在关注this https www digitalocean com community tutorials how to set up a node js application for production on ubuntu 16
  • 当 Jenkins 在 Ubuntu 上作为守护进程运行时,如何为 Jenkins 提供更多堆空间?

    我的 Jenkins 作业内存不足 给java lang OutOfMemoryError构建日志中的消息 但我使用了 Ubuntu 包管理器 aptitude or apt get安装 Jenkins 我不知道在哪里可以更改分配给 Jen
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • Rabbitmq 忽略 Ubuntu 12 上的配置

    I have rabbitmq server从系统包安装乌班图12 无论我做什么 它似乎都会忽略任何配置文件 网络上的所有内容都表明服务器正在寻找 etc rabbitmq rabbitmq conf 但即使我创建该文件 服务器也报告没有配
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

    我编写了一个应用程序 我希望对其进行一定程度的自动调试 我想使用 Windows 错误报告将故障转储输出到应用程序运行所在的同一文件夹中 我的想法是 我可以让我的应用程序在它自己的文件夹中查找任何 dmp 文件 然后根据需要上传它们进行分析
  • 安装 scrapy 0.22 时出错(在 Ubuntu 12.04 上):“gcc”失败,退出状态为 1

    尝试使用 pip 从命令行安装 Scrapy 时 sudo pip install scrapy我收到以下错误 error command gcc failed with exit status 1 查看错误输出中的几行 我发现在尝试安装
  • teracopy 如何替换默认的 Windows 副本

    我问了这个问题Windows 文件复制内部结构 动态加密 https stackoverflow com questions 24220382 windows file copy internals on the fly encryptio
  • Windows C++ 中的键盘钩子还是什么?

    我希望构建自己的应用程序 它可以将键盘命令 消息 发送到 Windows 操作系统 例如 当我按下组合键 ctrl shift n 时 我希望启动 notepad exe 我怎样才能做到这一点 您对所使用的概念有什么建议吗 我读过 何时使用
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • nginx 获取静态文件失败,返回 404

    我现在正在 ubuntu 12 上部署带有 nginx 和 Gunicorn 的 django 应用程序 我配置nginx虚拟主机文件如下 server listen 80 server name mydomain com access l
  • Ubuntu 中的颜色选择器实用程序(颜色移液器)[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将所有文件与指定目录(和子目录)中的所有文件进行二进制比较

    我需要将目录及其子目录中包含的所有文件与同一目录及其子目录中包含的所有其他文件进行比较 并将匹配文件的路径记录到文本文件或 CSV 我意识到有一些软件工具可以做到这一点 但除非它可以在 Windows 中开箱即用 否则我将不被允许在我的网络
  • dlib 不使用 CUDA

    我使用 pip 安装了 dlib 我的显卡支持 CUDA 但是在运行 dlib 时 它不使用 GPU 我在 ubuntu 18 04 上工作 Python 3 6 5 default Apr 1 2018 05 46 30 GCC 7 3
  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • 生成尽可能最快的可执行文件

    我有一个非常大的程序 我一直在 Visual Studio 下编译 v6 然后迁移到 2008 我需要可执行文件尽可能快地运行 该程序大部分时间都花在处理各种大小的整数上 并且执行很少的 IO 显然 我会选择最大优化 但似乎可以做很多不属于
  • 将 kinit 与 keytab 文件一起使用时会发生什么

    希望对kinit和keytab文件的使用有更多的了解 例如 如果我已经为某个服务生成了一个密钥表文件 该服务通过以下方式注册到活动目录 ktpass mapuser to someuseraccount ktab k mykeytab a
  • 将 OpenBLAS 链接到 MinGW

    我正在尝试链接OpenBLAS https www openblas net 图书馆与明GW w64 https mingw w64 org Windows 上的编译器 这是我的代码 include

随机推荐

  • 某眼查的逆向

    一 准备 APP 某眼查 版本 11 4 0 工具 xposed FDex2 JustTrustMe Fiddler jadx 二 抓包 打开Fiddler 打开天眼查抓包 开启JustTrustMe能抓到包 我们抓取工商信息这块 查看Fi
  • UE Mesh Generation and Editing at Runtime

    UE Mesh Generation and Editing at Runtime 虚幻运行时和编辑器下生成和编辑 网格体 UE Mesh 虚幻中常用的三种网格体 UProceduralMeshComponent 程序化网格体 UStati
  • Java编写好的全国省市名称

    public class PlaceUtil public static final String place 北京市 市辖区 市辖县 天津市 市辖区 市辖县 安徽省 安庆市 蚌埠市 亳州市 巢湖市 池州市 滁州市 阜阳市 合肥市 淮北市
  • Tomcat设置虚拟主机时候startup闪退问题解决

    1 修改 startup bat 文件 将 call EXECUTABLE start CMD LINE ARGS 中的 start 改为 run 2 在 startup bat 文件的最后增加 pause 3 启动 tomcat 后相应错
  • 渗透学习 Linux基础知识

    你生来就值得被爱 这点你无需质疑 小白入坑学废集2 Linux 介绍 什么是Linux Linux系统结构 Linux常见发行版本 版本问题 磁盘分区表示 硬盘和分区结构 目录结构 目录名 Linux系统常用命令 命令行编辑的几个辅助操作
  • 力扣876. 链表的中间结点(java+python)

    给定一个头结点为 head 的非空单链表 返回链表的中间结点 如果有两个中间结点 则返回第二个中间结点 示例 1 输入 1 2 3 4 5 输出 此列表中的结点 3 序列化形式 3 4 5 返回的结点值为 3 测评系统对该结点序列化表述是
  • 【mysql系列】mysql安装和卸载详细教程

    mysql安装和卸载详细教程 一 安装 1 下载 2 安装 1 编辑 my ini 文件 2 初始化数据库 3 安装数据库 4 启动 mysql 服务 5 登录 mysql 数据库 6 更改密码 二 卸载 1 停止Mysql服务 2 卸载m
  • c 服务器信息 源代码,ftp服务器c源代码

    ftp服务器c源代码 内容精选 换一换 根据各功能的平台依赖性 需要分别准备两套环境 一套x86环境 一套鲲鹏环境 本文实际使用了如表1和表2两套环境 鲲鹏代码迁移工具是一款可以简化客户应用迁移到基于鲲鹏916 920的服务器的过程的工具
  • gta5因为计算机丢失xinput1,xinput1_3.dll_gta5丢失xinput1_3.dll_xinput1_3.dll win10

    xinput1 3 dll官方下载由起点下载免费提供 起点提供xinput1 3 dll官方下载 xinput1 3 dll是Microsoft DirectX for Windows的控制模块 当运行程序或者游戏时 系统弹出错误提示 找不
  • 【c语言】练手:一个简单的图书管理系统

    c语言 练手 一个简单的图书管理系统 最近在学习结构体和结构体指针等内容 为了巩固所学习的内容 于是写了一个简陋的图书管理系统 在敲代码过程中也遇到一些容易忽略的问题 于是记录下来 大家可以给给建议 核心功能主要有3个 录入书籍信息 打印书
  • Android 退出整个程序代码

    今天在网上看见个博客关于退出整个程序的 感觉不错 拿来分享学习 SysApplication这个类复制到工程里面 然后在每个Acitivity的oncreate方法里面通过SysApplication getInstance addActi
  • layui table 字体大小_layui table表格详解

    上次做table有些东西 忘记了 这次当作来个分析总结一下 跟大家共同学习 闲话不多说 直接上例子 代码 layuitable初始化代码 layui use table function var table layui table tabl
  • Https 公钥私钥交换过程

    记录一下Https 公钥私钥加密过程 对称加密 编 解码使用相同密钥的算法 一般是共享密钥 非对称加密 非对称加密算法需要两个密钥 公开密钥 publickey 简称公钥 和私有密钥 privatekey 简称私钥 公钥与私钥是一对 如果用
  • 滤波去噪和小波去噪

    原文 http zhidao baidu com linkurl 7vqgj2oQ4MacZxGLdJXM lTCDdW3TrY6hbeInWeW7NWgcCFjO8qHbbm0U8lONrAanc6BQR7WwJB0GRzgZXZQLK
  • 【云原生&Docker基础篇】Docker的安装与使用(适用于初学者)

    博客首页 派 大 星 欢迎关注 点赞 收藏 留言 本文由派大星原创编撰 系列专栏 Docker 云原生 本系列记录容器化技术的初次探险与深入思考历程 如有描述有误的地方还望诸佬不吝赐教 文章目录 Docker 是什么 Docker的优点 D
  • 机械硬盘分区 最佳性能方案

    原理 机械硬盘的通过磁头读写数据 由于角速度恒定 磁头越靠近外圈 扫描的扇区越多 读写速度越快 3个磁盘分区方案 假设 磁盘半径r 10 内层半径r1 2 5 中层半径r2 5 外层半径r3 7 5 内层面积 s1 r2xr2 r1xr1
  • Android APP 与STM32无线环境控制系统

    本系统为安卓APP的环境参数远程监控系统 以STM32F103单片机作为本设计的中控中心 结合物联网技术 以Android智能手机作为远程控制的客户端 通过8266 WiFi模块实现环境监控系统硬件与Android手机的交互 环境参数的反馈
  • Android学习——MultiAutoCompleteTextView组件

    1 编辑activity main xml文件 添加MultiAutoCompleteTextView组件
  • unity3d 5 GUI Texture不显示原因分析

    Unity5添加GUI组件game视图无显示可能原因如下 1 Transform position应该为0 1之间为屏幕占比 2 scale大小比例 3 如果用系统自带的第一人称控制器 组件中不包括GUI层 因此应该在添加组件中Render
  • WSL2使用cuda

    在微软最新发布的 Windows Insider 预览版本中 WSL2 获得了 GPU 计算支持 这意味着 Linux 二进制文件可以利用 GPU 资源 在 WSL 中进行机器学习 AI 开发或是数据科学等工作 微软在今年五月份的 Buil