当前位置: 首页 > news >正文

WSL安装Ubuntu22.04,以及深度学习环境的搭建

安装WSL

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

下载 Linux 内核更新包:l链接:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下载完成后更新。

将 WSL 2 设置为默认版本,命令:

wsl --set-default-version 2

打开 Microsoft Store,搜索WSL,选择你偏好的 Linux版本。
在这里插入图片描述
我选择的是Ubuntu22.04版本。点进去就可以看到下载链接z
下载即可。下载完成后,启动系统,配置用户名和密码。
在这里插入图片描述

输入nvidia-smi,检查是否能找到显卡,正常情况,如下图:
在这里插入图片描述

一些问题

WslRegisterDistribution failed with error: 0x8007019e The Windows Subsystem错误的解决方案

执行命令

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

回车,输入Y或者y,然后系统重启。

输入nvidia-smi,显示不正确

这个有可能是wsl的版本不对,出现这种情况是Window的版本太低了!升级到21H2或者Win11。

也可以通过观察Ubuntu的版本,如下图:
在这里插入图片描述
如果wsl的版本是1.0的,内核是4.XXX。

也可以使用命令,查看wsl版本,在PowerShell里输入:

wsl -l -v

在这里插入图片描述
红框里的是2,就正确了!如果是1,则要重新安装Ubuntu。
执行命令:

wsl --list

查找wsl的列表。

wsl --unregister Ubuntu-22.04

注销列表中显示的Ubuntu系统

然后,重新打开Ubuntu系统。

注:WSL系统使用的显卡驱动是Win系统的驱动,所以不用安装驱动!

安装CUDA

安装gcc,执行命令:

sudo apt update
sudo apt install build-essential

在这里插入图片描述
输入Y。

链接:https://developer.nvidia.com/cuda-toolkit-archive
我选用的是12.1版本,如下图:

在这里插入图片描述
执行命令:

wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
sudo sh cuda_12.1.1_530.30.02_linux.run

在这里插入图片描述
输入accept。

在这里插入图片描述
选择安装的组件,不用安装驱动!

选择Install。
在这里插入图片描述
安装完成

接下来,配置环境变量输入vim ~/.bashrc命令打开文件,在文件结尾输入以下语句,保存。

export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

在这里插入图片描述
然后,点击保存后关闭文档,然后执行命令source ~/.bashrc。
至此cuda安装完成,输入nvcc -V命令查看cuda信息。
在这里插入图片描述

安装cuDNN

链接:https://developer.nvidia.com/rdp/cudnn-archive
打开连接,选择CUDA 12.x,这里要和安装的CUDA版本对上!
在这里插入图片描述
点击上图红框的位置,就可以看到下图的列表,选择对应的文件,单击后就可以下载,如下图:
在这里插入图片描述
在地址栏输入“\wsl$”,然后点击Enter键。打开Ubuntu22.04的目录!
在这里插入图片描述
在这里插入图片描述
然后,找到home路径,如下图:

在这里插入图片描述
将下载的cudnn复制到用户名的路径下,如下图:
在这里插入图片描述
然后,执行安装命令,命令如下:

 sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb

等待cuDNN安装包仓库安装完毕后,最后几行会输出一个添加密钥的命令,类似下面。我们执行输出的那个命令:
在这里插入图片描述
执行命令:

sudo cp /var/cudnn-local-repo-ubuntu2204-8.8.0.121/cudnn-local-B66125A0-keyring.gpg /usr/share/keyrings/

更新apt源,让apt包管理器能够找到刚刚安装的cuDNN安装包仓库:

sudo apt update

准备安装cuDNN,先查找一下cuDNN安装包仓库中包含的cuDNN深度学习库有哪些版本:

sudo apt list libcudnn*

在这里插入图片描述
安装cuDNN库,执行命令:

sudo apt install libcudnn8-dev libcudnn8-samples

检查一下cuDNN的动态库文件是否安装到位,执行命令:

readelf -d /usr/lib/x86_64-linux-gnu/libcudnn.so | grep SONAME

在这里插入图片描述

检查libcudnn8-dev是否安装成功,执行命令:

cat /usr/include/cudnn_version.h | grep CUDNN_

编译一下cuDNN的示例代码。如果能成功编译并运行,代表你的CUDA工具链和cuDNN库全部正常工作。

# 复制示例代码到$HOME目录下,然后进入该目录
cp -r /usr/src/cudnn_samples_v8/ ~
cd ~/cudnn_samples_v8/# 试着编译一份卷积运算的示例代码
cd conv_sample/
# 用apt安装的cuDNN头文件和库目录位置与Makefile中给定的默认位置不同,
# 因此我们先手动指定位置后再make
CUDNN_INCLUDE_PATH=/usr/include/ CUDNN_LIB_PATH=/usr/lib/x86_64-linux-gnu/ make# 编译完成后,执行编译出的二进制文件,进行卷积运算测试
./conv_sample# 运行更多的卷积运算测试案例
source run_conv_sample.sh

运行结果:
在这里插入图片描述

在这里插入图片描述

相关文章:

WSL安装Ubuntu22.04,以及深度学习环境的搭建

安装WSL 安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。 以管理员身份打开 PowerShell 并运行: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart下载 Linux 内核更…...

【PTA|选择题|期末复习】结构体

2-1 For the following declarations,assignment expression_is not correct. struct Student {long num;char name[28];}st1,st2{101,"Tom"},*p&st1; 〇 A.st1 st2 ◎ B.p->name st2.name O C p->num st2.num 〇 D,*pst2 2-2 下面定义结构变量的语…...

Video generation models as world simulators-视频生成模型作为世界模拟器

原文地址:Video generation models as world simulators 我们探索在视频数据上进行大规模生成模型的训练。具体来说,我们联合训练文本条件扩散模型,同时处理不同持续时间、分辨率和长宽比的视频和图像。我们利用一个在视频和图像潜在编码的时…...

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感,严格遵循黄金分割比例的蓝色点晴线条,加上雾面工艺及高低起伏错落有致的线条处理,在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…...

nginx-------- 高性能的 Web服务端 (三) 验证模块 页面配置

一、http设置 1.1 验证模块 需要输入用户名和密码 htpasswd 此命令来自于 httpd-tools 包,如果没有安装 安装一下即可 也可以安装httpd 直接yum install httpd -y 也一样 第一次生成文件htpasswd -c 文件路径 姓名 交互式生成密码 htpasswd -bc 文…...

Kafka是如何防止消息丢失的

Kafka通过一系列机制来防止消息丢失,主要包括以下几个方面: 生产者端(Producer)保证: 同步发送:生产者默认是异步发送消息的,但如果希望保证消息不丢失,可以选择将异步发送改为同步…...

[工具探索]VSCode介绍和进阶使用

相比较GoLand、PhpStorm、PyCharm、WebStorm的重量级内存占用,从Windows系统来,各种卡死,换到MacOS倒不会卡死,但是内存占用太多,影响体验,决定换到VSCode。当然这个过程需要适应过渡期,旧伙计都…...

Oracle迁移到mysql-表结构的坑

1.mysql中id自增字段必须是整数类型 id BIGINT AUTO_INCREMENT not null, 2.VARCHAR2改为VARCHAR 3.NUMBER(16)改为decimal(16,0) 4.date改为datetime 5.mysql范围分区必须int格式,不能list类型 ERROR 1697 (HY000): VALUES value for partition …...

【SpringCloudAlibaba系列--nacos配置中心】

Nacos做注册中心以及使用docker部署nacos集群的博客在这: 容器化部署Nacos:从环境准备到启动 容器化nacos部署并实现服务发现(gradle) 使用docker部署nacos分布式集群 下面介绍如何使用nacos做配置中心 首先要进行nacos-config的引入,引入…...

使用LinkedList实现堆栈及Set集合特点、遍历方式、常见实现类

目录 一、使用LinkedList实现堆栈 堆栈 LinkedList实现堆栈 二、集合框架 三、Set集合 1.特点 2.遍历方式 3.常见实现类 HashSet LinkedHashSet TreeSet 一、使用LinkedList实现堆栈 堆栈 堆栈(stack)是一种常见的数据结构,一端…...

springboot-cache+redis 为指定名称缓存设置独立超时时间

版本 spring-boot: 3.2.2 方案 注册 RedisCacheManagerBuilderCustomizer Bean对指定名称缓存进行定制 Bean RedisCacheManagerBuilderCustomizer redisCacheManagerBuilderCustomizer() {return builder -> builder.withCacheConfiguration(// Cacheable 注解使用的cac…...

Flutter 数据持久化存储之Hive

Flutter 数据持久化存储之Hive 前言正文一、配置项目二、UI① 增加UI② 显示和删除UI 三、使用Hive① 初始化Hive② TypeAdapter自定义对象③ 注册TypeAdapter③ CURD 四、源码 前言 在Flutter中,有多种方式可以进行数据持久化存储。以下是一些常见的方式&#xff1…...

Java中继承静态属性,方法,和非静态属性和方法的继承区别

结论: Java中静态属性和静态方法是可以被继承的,但是不可以被重写,而是被隐藏。 Java中非静态属性,可以被继承,但是不可以被重写,而是被隐藏。 Java中非静态方法,可以被继承,可以…...

C# If与Switch的区别

在 switch 语句中使用表达式比较时,编译器会生成一个查找表,其中包含所有表达式的值和对应的 case 标签。因此,与使用常量或字面量比较相比,使用表达式比较可能会略微降低性能。 只有当 switch 语句中的所有 case 标签都使用常量或…...

实验室预约|实验室预约小程序|基于微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)

实验室预约小程序目录 目录 基于微信小程序的实验室预约管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 (1)管理员登录 (2)实验室管理 (3)公告信息…...

蓝桥杯DP算法——区间DP(C++)

根据题意要求的是将石子合并的最小权值,我们可以根据DP思想使用二维数组f[i,j]来存放所有从第i堆石子到第j堆石子合并成一堆石子的合并方式。 然后由第二个图所示,我们可以将i到j区间分成两个区间,因为将i到j合并成一个区间的前一步一定是合…...

pytest结合Allure生成测试报告

文章目录 1.Allure配置安装2.使用基本命令报告美化1.**前置条件**2.**用例步骤****3.标题和描述****4.用例优先级**3.进阶用法allure+parametrize参数化parametrize+idsparametrize+@allure.title()4.动态化参数5.环境信息**方式一****方式二**6.用例失败截图1.Allure配置安装 …...

Linux--ACL权限管理

一.ACL权限管理简介 ACL(Access Control List,访问控制列表)是一种文件权限管理机制,它提供了比传统的UGO(用户、组、其他)权限更灵活的权限设置方式。以下是ACL的一些主要功能: 针对特定用户或…...

Xcode中App图标和APP名称的修改

修改图标 选择Assets文件 ——> 点击Applcon 换App图标 修改名称 点击项目名 ——> General ——> Display Name...

Spring 手动实现Spring底层机制

目录 一、前言 二、Spring底层整体架构 1.准备工作 : 2.架构分析 : (重要) 3.环境搭建 : 三、手动实现Spring容器结构 1.自定义注解 : 1.1 Component注解 1.2 Scope注解 2.自定义组件 : 3.自定义用于封装Bean信息的BeanDefinition类&a…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...