由于想给算法加速,因此尝试一下pytorch的C++接口libtorch。
首先,TX2上面已经配置好了pytorch1.0版本。
第一种方法:
官网下载libtorch:https://download.pytorch.org/libtorch/cu90/libtorch-shared-with-deps-latest.zip
将其解压放到合适的位置(任何位置都可以,因为是编译好的)
然后按照网上的步骤,自己写c++代码调用,加上头文件
#include "torch/script.h"
#include "torch/torch.h"
写CMakeList文件:
cmake_minimum_required(VERSION 3.5)
project(test_pytorch)
set(CMAKE_CXX_STANDARD 11)
set(Torch_DIR /home/nvidia/libtorch/share/cmake/Torch)
find_package(OpenCV REQUIRED)
find_package(Torch REQUIRED)
add_executable(test_pytorch test_pytorch.cpp)
target_link_libraries(test_pytorch ${OpenCV_LIBS} ${TORCH_LIBRARIES})
但是再编译make的过程中出现了错误,仿佛是libtorch.so有问题。
这是在TX2上操作的,考虑官方提供的libtorch是编译好的,可能不支持arm64环境,因此采用第二种方法自己编译。
第二种方法:
进入pytorch的build文件夹(我的pytorch1.0之前已经编译安装好了)
执行sudo python ../tools/build_libtorch.py
编译完成会出现下面的界面。
-- Install configuration: "Release"
-- Set runtime path of "/home/nvidia/pytorch/torch/test/batch_matmul_op_gpu_test" to "$ORIGIN:/usr/local/cuda/lib64"
-- Set runtime path of "/home/nvidia/pytorch/torch/lib/libthnvrtc.so" to "$ORIGIN:/usr/local/cuda/lib64"
-- Set runtime path of "/home/nvidia/pytorch/torch/lib/libtorch.so.1" to "$ORIGIN:/usr/local/cuda/lib64"
-- Set runtime path of "/home/nvidia/pytorch/torch/lib/libcaffe2_detectron_ops_gpu.so" to "$ORIGIN:/usr/local/cuda/lib64"
-- Set runtime path of "/home/nvidia/pytorch/torch/lib/libcaffe2_module_test_dynamic.so" to "$ORIGIN"
-- Set runtime path of "/home/nvidia/pytorch/torch/lib/libcaffe2_observers.so" to "$ORIGIN"
然后cmake,cmake的过程中出现了下面的错误:
Could not find a package configuration file provided by "Torch" with any of the following names:
TorchConfig.cmake
torch-config.cmake
我在pytorch文件夹在搜索 TorchConfig.cmake,发现在 /pytorch/torch/share/cmake/Torch路径下,因此需要在CmakeLists加上这个路径。编译成功!
cmake_minimum_required(VERSION 3.5)
project(test_pytorch)
set(CMAKE_CXX_STANDARD 11)
set(Torch_DIR /home/nvidia/pytorch/torch/share/cmake/Torch)
find_package(OpenCV REQUIRED)
find_package(Torch REQUIRED)
add_executable(test_pytorch test_pytorch.cpp)
target_link_libraries(test_pytorch ${OpenCV_LIBS} ${TORCH_LIBRARIES})