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.pswp.cn/web/46315.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46315.shtml
英文地址,請注明出處:http://en.pswp.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;機器人客服能夠自…

Java集合框架的內部揭秘:List、Set與Map的深潛之旅

Java集合框架是一套強大的工具&#xff0c;為開發者提供了靈活的數據管理方式。本文將深入剖析List、Set和Map的內部機制&#xff0c;通過詳細的示例和擴展討論&#xff0c;帶你領略這些數據容器的真諦。 一、List&#xff1a;有序序列的深度剖析 List接口是一個可以包含重復…

自制連點器

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 Boot 中,監聽應用程序啟動的生命周期事件的4種方法

文章目錄 前言在 Spring Boot 中&#xff0c;監聽應用程序啟動的生命周期事件有多種方法。你可以使用以下幾種方式來實現&#xff1a; 一、使用 ApplicationListener二、使用 EventListener三、實現 CommandLineRunner 或 ApplicationRunner四、使用 SmartLifecycle總結 前言 …

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…