WSL-Ubuntu20.04部署环境配置

1.更换Ubuntu软件仓库镜像源

        为了在WSL上使用TensorRT进行推理加速,需要安装以下环境,下面将按以下顺序分别介绍安装、验证以及删除环境:

#1.C++环境配置
gcc、gdb、g++
#2.gpu环境
cuda、cudnn
#3.Cmake环境
CMake
#4.OpenCV环境
OpenCV
#5.TensorRT环境
TensorRT

        在安装这些库之前,需要先更换清华镜像,可以加速Ubuntu下载速度,使用指令lsb_release -a查看Linux 发行版的信息,如下所示:

        其中关注一下Codename:focal ,参照博客WSL不同版本的Ubuntu更换清华镜像-CSDN博客,如果是focal的话,则修改镜像源为下面内容,如果是其他的codename的话,需要将https://mirrors.tuna.tsinghua.edu.cn/ubuntu,后面的focal修改为对应的内容,比如还可能是jammy、lunar、kinetic和bionic。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiversedeb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

        现在来看一下如何修改,分成两个步骤,第一:备份该配置文件,避免镜像替换后不可用,还可以恢复到原始版本;第二:修改镜像源。

        首先来看备份配置文件:配置文件放在/etc/apt路径下,执行以下指令备份配置文件sources.list.

 cp sources.list sources.list.bak

         然后修改镜像源,执行以下指令:

vim source.list

         最后把前面的镜像源地址复制进去,然后在一般模式下使用:wq,保存并退出,如下所示:

2.C++环境配置

        安装:

sudo apt update
sudo apt install build-essential

        验证:

gcc --version

3.CUDA和CUDNN安装 

        前面也提到了wsl-ubuntu20.04的显卡驱动和本机的显卡驱动是一样的,再利用nvidia-smi查看下显卡驱动版本,再决定安装什么版本的CUDA和cuDNN.

        显卡驱动版本号为12.2,可以理解为可以支持的CUDA最大版本号,但是我们也不需要安装那么高的CUDA,可以选择一个稳定点的比如CUDA11.6.

3.1CUDA-11.6安装 

        CUDA下载:CUDA Toolkit Archive | NVIDIA Developer,选择cuda11.6下载,如下所示。

         安装: 接下来执行以下指令来进行安装;

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-6-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

        以上的指令分别代表:(1)下载 cuda-wsl-ubuntu.pin 文件;(2)移动 cuda-wsl-ubuntu.pin 文件到 /etc/apt/preferences.d/ 目录;(3)下载 CUDA 11.6 的本地安装包;(4)安装 CUDA 仓库包;(5)添加 CUDA 仓库的公钥;(6)更新包列表;(7)安装 CUDA。

        其中第三步中,如果网络不顺畅的话可以直接复制链接到浏览器中进行下载,然后再放到你的安装路径下,我这里直接是放在/root路径下,然后继续执行后面的步骤。

        验证:

        CUDA默认安装在/usr/local路径下,进入到该路径下,其中cuda-11.6文件夹即为安装好的cuda,里面会包含有bin、lib及include文件,其中nvcc指令在bin路径下,即/usr/local/cuda-11.6/bin.

        下面需要把bin路径下的常用指令添加在home/.bashrc环境变量文件中,然后再使用nvcc -V来验证cuda是否安装成功:

       首先使用下面指令打开.bashrc:

vim ~/.bashrc

        然后直接在最后一行插入下面代码,指示了cuda-11.6的路径:

export CUDA_HOME=/usr/local/cuda-11.6  # 新建环境变量CUDA_HOME
export PATH=$PATH:$CUDA_HOME/bin       # 将bin目录添加到PATH这个环境变量

         最后执行下面指令来验证cuda是否已经安装成功: 

source ~/.bashrc 
nvcc -V

3.2cuDNN-8.9.5安装 

          cuDNN下载:链接,我这里选择符合版本要求的v8.9.5,选择Linux_x86_64(Tar)下载。

        我这里选择把下载好的文件放在/root路径下,如下所示: 

         安装: 首先解压得到lib和include文件夹,然后将解压后的文件夹分别复制到前面的cuda-11.6里面对应的lib64和include路径下,指令如下所示:

tar -xvf cudnn-linux-x86_64-8.9.5.30_cuda11-archive.tar.xz
cd cudnn-linux-x86_64-8.9.5.30_cuda11-archive/ #进入解压路径
cp ./lib/* /usr/local/cuda-11.6/lib64          # 拷贝lib
cp ./include/* /usr/local/cuda-11.6/include    # 拷贝头文件

        验证: 执行以下指令,显示如下内容说明cuDNN安装成功。

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

 4.CMake-3.30.0安装

        CMake下载:Download CMake,这里我选择的是3.30.0版本进行下载,下载得到cmake-3.30.0.tar.gz压缩包,然后找个路径进行解压,如下所示:

         安装:

        首先将cmake-3.30.0.tar.gz这个压缩包放在/root路径下,使用以下指令来解压缩cmake包.

tar -zxvf cmake-3.30.0.tar.gz

        然后进入解压后的文件夹,进行编译和安装,其中make -j4中的-j4表示使用4个进程,可以提升生成的速度: 

cd cmake-3.30.0/
./bootstrap
make -j4
make install 

        问题: 我在执行./bootstrap遇到了Error:Could not find OpenSSL,如下所示:

        解决: 那么需要安装libssl-dev,然后重新再执行一遍./bootstrap指令,执行成功后是下面这样子的.

sudo apt-get install libssl-dev

         验证: 执行以下指令,查看Cmake版本及Cmake位置,没有问题的话说明Cmake安装成功了。 

cmake --version
which cmake

5.OpenCV-4.8安装

        OpenCV下载:Releases - OpenCV,这里我选择一年前发布的OpenCV-4.8,点击sources,下载得到opencv-4.8.0.zip压缩包,然后找个路径进行解压,如下所示:

         安装:

        第一步:把opencv-4.8.0.zip这个压缩包放在/root路径下,使用unzip指令来解压缩opencv包.

unzip opencv-4.8.0.zip

         第二步:进入opencv路径,创建build文件,用来保存编译的文件。

cd opencv-4.8.0/
mkdir build
cd build

         第三步:依次执行以下指令,使用CMake来配置、生成和安装OpenCV,其中make生成这一步的时间稍微会长一点,大概15分钟左右,可以在make后面加入-j4来加快生成,其中4指同时使用4个进程。 

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
make -j4
make install

        问题: 我在执行make -j4指令的时候,报错fatal error: openjpeg.h: No such file or directory,那么需要安装libopenjp2-7-dev。

        解决: 如果你和我遇到了一样的问题,那么安装完之后为了保险起见,需要删除build文件夹,重新配置生成,即重新执行第二步和第三步的指令。

apt-get install libopenjp2-7-dev

        验证:

        安装完OpenCV后需要知道OpenCV的bin、lib及include文件放在哪个路径下:

        其中include头文件放在路径下:/usr/local/include/opencv4/opencv2;bin文件放在路径下:/usr/local/bin;lib文件放在路径下:/usr/local/lib.

        下面来验证OpenCV是否安装成功,由于我们不是在ubuntu主机上操作,而是相当于链接一个远程主机,所以使用imshow报错是很正常的,如下所示,但是我们不需要imshow函数,只需要用到opencv来处理图片,所以我需要修改一下样例的代码。 

        首先时进入到一开始解压缩的文件夹中,并使用vim来编辑一下代码,只需要把imshow修改为imwrite,并且注释掉waitKey(0)代码即可,如下所示。 

cd /root/opencv-4.8.0/samples/cpp/example_cmake
vim  example.cpp

        然后再执行以下指令编译和生成可执行文件,如下所示.

cmake -S . -B build
cmake --build build

        最后运行可执行文件,发现在当前路径下会生成一个Sample.jpg的图片,显示如下则说明安装成功了(查看图片可以直接通过\wsl.localhost\Ubuntu-2004\root\opencv-4.8.0\samples\cpp\example_cmake路径,在window上直接查看): 

./build/opencv_example 

6.TensorRT-8.5安装

        TensorRT下载:NVIDIA TensorRT 8.x Download | NVIDIA Developer,EA 版本代表抢先体验,而GA 代表通用性,表示稳定版,所以我们还是下载TensorRT8.5GA稳定版的,

        安装:

        第一步:把TensorRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.6.tar.gz这个压缩包放在/root路径下,解压缩TensorRT包.

 tar -zxvf TensorRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.6.tar.gz

        第二步: 将TensorRT/lib的绝对路径添加到在home/.bashrc环境变量文件中.

        首先使用以下指令打开.bashrc.

vim ~/.bashrc

        然后添加以下代码到文件中,如下所示: 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/TensorRT-8.5.1.7/lib

        最后使用以下指令更新一下: 

source ~/.bashrc

        验证:

        第一步:进入到/root/TensorRT-8.5.1.7/samples/sampleOnnxMNIST路径下.

cd /root/TensorRT-8.5.1.7/samples/sampleOnnxMNIST

        第二步:编译并执行可执行文件,如下所示即安装成功。 

make
../../targets/x86_64-linux-gnu/bin/sample_onnx_mnist

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vxe-grid 实现配置式form搜索条件 form搜索条件框可折叠 配置式table

文章目录 效果图代码 效果图 代码 <template><div class"app-container"><vxe-grid refxGrid v-bind"gridOptions" v-if"tableHeight" :height"tableHeight"><template #billDate"{ data }"><e…

Zoom视频会议软件使用

Zoom是一款广受欢迎的视频会议软件&#xff0c;使用它可以轻松地进行远程会议、在线培训和团队协作等。要充分利用Zoom软件的功能&#xff0c;以下是详细具体的使用方法和步骤&#xff1a; 下载安装 下载&#xff1a;访问Zoom官方网站&#xff0c;根据使用的操作系统下载相应的…

ttkefu在线客服系统 机器人+人工客服 全渠道接入客户咨询

ttkefu在线客服系统是一种集成了机器人客服与人工客服&#xff0c;并支持全渠道接入客户咨询的综合解决方案。这种系统能够显著提升客户服务效率&#xff0c;优化客户体验&#xff0c;同时帮助企业降低运营成本 1. 智能机器人客服 自动回复&#xff1a;机器人客服能够自…

自制连点器

B站使用教程&#xff1a;https://www.bilibili.com/video/BV1SR85e4EKw/?vd_source47eba1800d831e86d4778a128740fe73 下载链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1Spv_yVPFB3zoS__VL-nhaQ?pwdyxo1 提取码&#xff1a;yxo1

20.x86游戏实战-远线程注入的实现

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Spring AI 应用开发中设置访问 Ollama 的超时时间

使用 Spring AI 开发 AI 应用时&#xff0c;Ollama 通常在本地开发和测试时使用&#xff0c;用来在本地运行大模型。由于本地开发机器的资源限制&#xff0c;当使用 Ollama 运行较大的模型时&#xff0c;大模型给出响应的时间会比较长。Spring AI 提供的 OllamaChatModel 与 Ol…

在Mac上免费恢复误删除的Word文档

Microsoft Word for Mac是一个有用的文字处理应用程序&#xff0c;它与Microsoft Office套件捆绑在一起。该软件的稳定版本包括 Word 2019、2016、2011 等。 Word for Mac 与 Apple Pages 兼容;这允许在不同的操作系统版本中使用Word文档&#xff0c;而不会遇到任何麻烦。 与…

【数据结构】非线性表----树详解

树是一种非线性结构&#xff0c;它是由**n&#xff08;n>0&#xff09;**个有限结点组成一个具有层次关系的集合。具有层次关系则说明它的结构不再是线性表那样一对一&#xff0c;而是一对多的关系&#xff1b;随着层数的增加&#xff0c;每一层的元素个数也在不断变化&…

逆向案例二十三——请求头参数加密,某区块链交易逆向

网址&#xff1a;aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1oYW5zL2J0Yy90eC1saXN0L3BhZ2UvNAo 抓包分析&#xff0c;发现请求头有X-Apikey参数加密&#xff0c;其他表单和返回内容没有加密。 直接搜索关键字&#xff0c;X-Apikey&#xff0c;找到疑似加密位置&#xff0c;注意这里…

零基础学习Python(三)

1. 多重继承 一个子类可以继承多个父类&#xff0c;这与一些编程语言的规则不通。 如果多个父类中有同名的变量和方法&#xff0c;子类访问的顺序是按照继承时小括号里书写的顺序进行访问的。 可以用issubclass(B, A)方法判断B是否为A的子类。 2. 绑定 类中的方法通过参数s…

《TF2.x强化学习手册》P59-P65-SARSA-Q-learning

文章目录 实现SARSA算法和对应的强化学习智能体前期准备实现步骤工作原理初始化算法流程 构建基于Q学习的智能体前期准备实现步骤工作原理SARSA 算法的收敛性&#xff1a;SARSA 适合在线学习和真实系统&#xff1a;Q 学习算法的适用性&#xff1a; 实现SARSA算法和对应的强化学…

HDC使用常见命令

HDC&#xff08;HarmonyOS Device Connector&#xff09;是为开发人员提供的用于调试的命令行工具&#xff0c;通过该工具可以在windows/linux/mac系统上与真实设备进行交互。 使用HDC前&#xff0c;需要配置相关环境变量&#xff1a; 在此电脑 > 属性 > 高级系统设置 &g…

Git常用命令以及使用IDEA集成Gitee

目录 一、设置用户签名 二、初始化本地库 三、查看本地库状态 四、添加文件到暂存区 五、提交本地库 六、修改文件 七、版本穿梭 八、Git分支 九、分支的操作 9.1、查看分支 9.2、创建分支 9.3、切换分支 9.4、合并分支 十、团队协作 十一、Idea集成Git 11.1、配…

Github 2024-07-15 开源项目周报 Top15

根据Github Trendings的统计,本周(2024-07-15统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5非开发语言项目4JavaScript项目3TypeScript项目2Go项目1Solidity项目1Java项目1Rust项目1免费编程学习平台:freeCodeCamp.org 创建…

3.1-RNN存在的问题以及LSTM的结构

文章目录 1 RNN存在的问题1.1梯度消失问题1.2梯度爆炸问题1.3梯度爆炸的对策 2梯度消失的对策——LSTM2.1输出门2.2遗忘门2.3输入门2.4总结2.5 LSTM梯度的流动 1 RNN存在的问题 RNN存在梯度消失和梯度爆炸的问题。 书上以下图的这句话为例&#xff0c;进行说明&#xff1b;为了…

前瞻断言与后瞻断言:JavaScript 正则表达式的秘密武器

JavaScript 中的前瞻断言&#xff08;lookahead&#xff09;和后瞻断言&#xff08;lookbehind&#xff09;相信用过的小伙伴就知道它的威力了&#xff0c;在一些特定的需求场景下&#xff0c;可以做到四两拨千斤的作用&#xff0c;今天让我们来盘点一下在 JavaScript 正则表达…

昇思25天学习打卡营第14天|munger85

基于MindNLPMusicGen生成自己的个性化音乐 这个所谓的个性化的音乐就是指你输入一段文字它会根据这个文字输出一段音乐这个音乐是贴近于那段文字的所以叫做文生成音乐&#xff0c; 如果网络正常的话就可以直接从下载这个模型。 那么音乐生成的有两种方式呢有两种方式&#xff…

【C++初阶】C/C++内存管理

【C初阶】C/C内存管理 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C&#x1f96d; &#x1f33c;文章目录&#x1f33c; 1. C/C内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3…

拉格朗日乘子法和KKT条件

拉格朗日乘子法(Lagrange Multiplier) 和 KKT(Karush-Kuhn-Tucker) 条件是求解约束优化问题的重要方法&#xff0c;在有等式约束时使用拉格朗日乘子法&#xff0c;在有不等约束时使用 KKT 条件。当然&#xff0c;这两个方法求得的结果只是必要条件&#xff0c;只有当目标函数…

ssrf复习(及ctfshow351-360)

1. SSRF 概述 服务器会根据用户提交的URL发送一个HTTP请求。使用用户指定的URL&#xff0c;Web应用可以获取图片或者文件资源等。典型的例子是百度识图功能。 如果没有对用户提交URL和远端服务器所返回的信息做合适的验证或过滤&#xff0c;就有可能存在“请求伪造"的缺陷…