赞
踩
转载请注明作者和出处: http://blog.csdn.net/john_bh/
解压:
$ unzip libtorch-cxx11-abi-shared-with-deps-1.6.0+cu101.zip
查看解压的LibTorch文件:包括bin,include,lib,share,build-version文件夹和build-hash,build-version文件:
$ tree -L 1
解决 tree 命令 出现乱码:
$ alias tree='tree --charset ASCII'
- 1
在 ~/libtorch/ 新建文件夹:example
$ mkdir example
$ cd example/
编写CMake构建配置, CMakeLists.txt
文件如下所示:
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) # The following code block is suggested to be used on Windows. # According to https://github.com/pytorch/pytorch/issues/25457, # the DLLs need to be copied to avoid memory errors. if (MSVC) file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll") add_custom_command(TARGET example-app POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${TORCH_DLLS} $<TARGET_FILE_DIR:example-app>) endif (MSVC)
编写 example-app.cpp
程序,实现将简单地创建一个新的torch :: Tensor并将其打印出来,代码如下:
#include <torch/torch.h>
#include <iostream>
int main() {
torch::Tensor tensor = torch::rand({2, 3});
std::cout << tensor << std::endl;
}
cmake 编译
构建应用程序,目录的布局如下:
在 example/
文件夹中新建 build
文件夹,用来编译程序:
$ mkdir build
$ cd build
执行编译命令:
#cmake -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch ..
$ cmake -DCMAKE_PREFIX_PATH=/XXXX/libtorch ..
因为我使用了cuda,这里会有一个 warning
,但是已经编译成功了,不用管它。其中/absolute/path/to/libtorch
是解压缩的LibTorch的绝对路径, 如果通过conda或pip安装了PyTorch,则可以使用torch.utils.cmake_prefix_path
变量查询 CMAKE_PREFIX_PATH
。 在这种情况下,CMake配置步骤如下所示:
$ cmake -DCMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'`
然后执行命令生成可执行文件:
$ cmake --build . --config Release
最后执行命令测试:
$ ./example-app
方法2和方法1的区别是,在cmakelists.txt
文件中配置了所需的环境,不用每次在命令中设置参数,并且这里libtorch和opencv4.3一起使用的,其中cpp文件依然使用example-app.cpp
,有的命令操作均在build 目录下进行,具体过程如下:
编写 CmakeLists.txt 文件,并配置路径:
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(example) set(Torch_DIR /home/XXXXX/libtorch/share/cmake/Torch) set(OpenCV_DIR /home/XXXXX/opencv4.3_install/lib/cmake/opencv4/) find_package(Torch REQUIRED) find_package(OpenCV REQUIRED) message(STATUS "Pytorch status:") message(STATUS " libraries: ${TORCH_LIBRARIES}") message(STATUS "OpenCV library status:") message(STATUS " version: ${OpenCV_VERSION}") message(STATUS " libraries: ${OpenCV_LIBS}") message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}") add_executable(example example-app.cpp) #target_link_libraries(example ${TORCH_LIBRARIES}) target_link_libraries(example ${TORCH_LIBRARIES} ${OpenCV_LIBS}) set_property(TARGET example PROPERTY CXX_STANDARD 14)
执行编译
$ cmake ..
同样这里会有关于cuda的warning,不用管它。
make
$ make
执行测试
./example
参考链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。