Linux系统LibTorch安装入门使用

libtorch是pytorch的c++接口,最近需要在linux上使用libtorch,在网上找的很多中文教程都是在windows下配置libtorch,于是自己研究了一番,下面就来讲讲怎么配置和使用。

参考的教程还是pytorch的官方教程:Installing C++ Distributions of PyTorch — PyTorch master documentation

第一步:编写调用libtorch的c++代码

示例代码 example-app.cpp,本代码生成了一个大小为2*3的随机矩阵,并通过标准输入输出流将其打印出来:

#include 
#include 

int main() {
  torch::Tensor tensor = torch::rand({2, 3}); //生成大小为2*3的随机数矩阵
  std::cout << tensor << std::endl;           //标准输出流打印至屏幕
}

第二步:编写CMakeLists.txt文件

CMakeLists.txt文件,将c++文件example-app.cpp编译成为可执行文件example-cpp:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(example-app)

find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")

add_executable(example-app example-app.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 14)

所以当前目录的结构应该是:

example-app/
  CMakeLists.txt
  example-app.cpp

第三步:使用cmake编译(两种方法)

在当前目录下创建build文件夹,并使用cmake编译,此时我们有两种方法去使用cmake:

方法一:当您已经拥有pytorch,您可以利用pytorch的接口

此方法需要你已经有pytorch,pytorch的安装方法有很多,conda安装,或者pip安装,官网教程Start Locally | PyTorch比较详细,在此不一一赘述。

$mkdir build
$cd build
$cmake -DCMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'` ..
$make

方法二:您没有pytorch,需要手动下载libtorch

官网首页Start Locally | PyTorch下载libtorch:

Linux系统LibTorch安装入门使用_第1张图片

 你可以点击链接直接下载,再传至linux服务器,或者直接在linux上用wget下载。官网上提供了两个版本(Pre-cxx11 ABI版本和cxx11 ABI版本),区别如下:Pre-cxx11 ABI是c++11之前的ABI,cxx11 ABI是c++11 的ABI,参考自YOLOv4在ROS-Melodic上的部署-libtorch(附源码,非Darknet)_地球被支点撬走啦的博客-CSDN博客_libtorch ros。实际使用时,两者区别很小,我们一般用cxx11 ABI版本。

注:ABI(Application Binary Interface)。

此处以pytorch1.13.1版本的CPU cxx11版本为例:

$wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-1.13.0%2Bcpu.zip
$unzip unzip libtorch-cxx11-abi-shared-with-deps-1.13.0+cpu.zip

unzip解压后你会得到一个名为“libtorch”的文件夹,您可以将您该文件夹移动到您想要的位置,或者就放着不动。假设我们移动到了/path/to/libtorch,那么我们编译的命令就为

$mkdir build
$cd build
$cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch ..
$make

注:笔者在编译该版本(v1.13.1)的CUDA版本时编译提示报错,需要cudnn,安装cudnn后可以编译运行通过。

第四步:运行与结果

编译完我们即可在当前目录下得到可执行文件example-app,我们直接运行它便可得到结果

$./example-app

运行结果:

(base) root@test:/work/test/build# ./example-app
 0.8859  0.1639  0.2670
 0.3521  0.0139  0.4678
[ CPUFloatType{2,3} ]

至此编译运行完成。关于libtorch有其他问题欢迎大家在评论区留言讨论! 

你可能感兴趣的:(linux,c++,深度学习,pytorch)