深度学习--第1篇(续): Ununtu16.04源码编译libtorch(GUDA版本)环境配置
Ubuntu16.04+libtorch編譯
- 1.參考博客
- 2.準(zhǔn)備工作
- 3.Libtorch編譯安裝
- 3.1 下載Pytorch源碼
- 3.2 下載libtorch庫(kù)
- 3.3 CMakeLists編寫
- 4.低版本兼容問(wèn)題(權(quán)重加載)
1.參考博客
Pytorch+libtorch編譯
libtorch源碼編譯
2.準(zhǔn)備工作
筆者采用Anaconda的虛擬環(huán)境下安裝Pytorch 1.5.0版本,具體版本如下:torchvision=0.6.0,python=3.6,CUDA=10.1, cudnn=7.6.5
(上述的需要預(yù)先安裝完成)
具體安裝步驟可參考上一篇博客:Pytorch安裝
3.Libtorch編譯安裝
3.1 下載Pytorch源碼
# 1.切換到conda的虛擬環(huán)境下 source activate wind# 2 由于pytorch的官網(wǎng)下載速度慢,可以參考筆者的另一篇,添加清華的鏡像源下載 [清華鏡像源安裝方法](https://blog.csdn.net/qq_37568167/article/details/105620960)# 3.安裝依賴庫(kù), 需要注意 cmake版本采用3.5.1,如果版本過(guò)高會(huì)存在編譯不通過(guò) conda install numpy ninja pyyaml mkl mkl-include setuptools cffi typing_extensions future six requests dataclasses# 4.安裝對(duì)CUDA的支持包, 對(duì)應(yīng)自己版本的cuda,筆者的時(shí)10.1 conda install magma-cuda101 # or [ magma-cuda102 | magma-cuda100 | magma-cuda92 ] # conda install -c pytorch magma-cuda101 # 5. 編譯Pytorch # 由于官網(wǎng)的下載較慢,筆者采用國(guó)內(nèi)gitee上進(jìn)行下載, 下載時(shí)間大約需要1.5個(gè)小時(shí) git clone https://gitee.com/wind_x/pytorch.git# 6. 下載完成后,進(jìn)行獲取其中的子模塊 cd pytorch git submodule sync git submodule update --init --recursive# 7. 選擇自己需要的Pytorch版本,需要與anaconda安裝的pytorch版本對(duì)應(yīng),筆者的是1.5.0版本 git tag -l git checkout v1.5.0# 8.編譯pytorch, 需要大約2個(gè)小時(shí);安裝扔需要2個(gè)小時(shí),共計(jì)4個(gè)小時(shí) export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"} mkdir build cd build cmake .. make -j4 sudo make install# 9.編譯成功后,會(huì)生成libtorch.so動(dòng)態(tài)鏈接庫(kù),存儲(chǔ)位置 動(dòng)態(tài)鏈接庫(kù): /usr/local/lib/libtorch.so 功能包: /usr/local/share/cmake/Torch3.2 下載libtorch庫(kù)
注意: libtorch版本向上兼容,即高版本的pytorch和低版本的libtorch(例如筆者:Pytorch=1.5.0, libtorch=1.3.0), 一定要選擇下載c++11的預(yù)編譯版本,使用ABI編譯的版本
由于筆者采用的時(shí)pytorch=1.5.0, 且 cuda=10.1, 因此下載libtorch<=1.5.0的庫(kù),但是cuda需要對(duì)應(yīng)。 具體的libtorch下載地址:libtorch=1.3.0, cuda=10.1
https://download.pytorch.org/libtorch/cu101/libtorch-cxx11-abi-shared-with-deps-1.3.0.zip
其中加粗部分可以根據(jù)自己的需求進(jìn)行更換,主要是cuda版本號(hào)與pytorch版本號(hào) (libtorch1.6.0版本之前的都可以)
# 解壓,解壓后得到的libtorch文件夾便是可以直接使用的 unzip libtorch-cxx11-abi-shared-with-deps-1.3.0.zip3.3 CMakeLists編寫
# 使用libtorch時(shí),需要在CMakeLists.txt中添加 # 表示的時(shí)通過(guò)3.3節(jié)libtorch下載解壓后的文件夾位置 set(CMAKE_PREFIX_PATH "/home/lenovo/libtorch") add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)# 尋找torch包時(shí)可以放在其他的下面 find_package(Torch REQUIRED)較為完整的CMakeLists.txt文件
cmake_minimum_required(VERSION 3.0.2) project(CNN_SLAM)set(CMAKE_BUILD_TYPE "Release") set(CMAKE_CXX_FLAGS "-std=c++11") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")## Find catkin macros and libraries find_package(catkin REQUIRED COMPONENTScv_bridgeroscpprospysensor_msgsstd_msgs )## System dependencies are found with CMake's conventions find_package(OpenCV 3.0 REQUIRED) find_package(Eigen3 REQUIRED)catkin_package()include_directories(# include${catkin_INCLUDE_DIRS}${OpenCV_INCLUDE_DIRS}${EIGEN_INCLUDE_DIRS} )set(CMAKE_PREFIX_PATH "/home/lenovo/libtorch") add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1) find_package(Torch REQUIRED) include_directories(include/)## Declare a C++ library add_library(${PROJECT_NAME} SHAREDsrc/cnn_slam.cpp )target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${OpenCV_LIBS} ${EIGEN_LIBS} ${TORCH_LIBRARIES} )## Declare a C++ executable add_executable(CNN_SLAM_node CNN_SLAM_node.cpp)target_link_libraries(CNN_SLAM_node ${PROJECT_NAME})4.低版本兼容問(wèn)題(權(quán)重加載)
# 對(duì)于v1.1.0 std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("./model.pt");# >1.1.0 torch::jit::script::Module module = torch::jit::load("./model.pt");總結(jié)
以上是生活随笔為你收集整理的深度学习--第1篇(续): Ununtu16.04源码编译libtorch(GUDA版本)环境配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html爱情表白神器,回忆纪念册(附源码
- 下一篇: generate...for的用法