Ubuntu18.04 配置 LibTorch

转载请注明作者和出处: http://blog.csdn.net/john_bh/

文章目录

    • 1. 下载LibTorch
    • 2. 配置并测试
      • 2.1 方法--官方cmake 例子
      • 2.2 方法2

1. 下载LibTorch

LibTorch官方下载地址

Ubuntu18.04 配置 LibTorch_第1张图片
解压:

$ unzip libtorch-cxx11-abi-shared-with-deps-1.6.0+cu101.zip

Ubuntu18.04 配置 LibTorch_第2张图片
查看解压的LibTorch文件:包括bin,include,lib,share,build-version文件夹和build-hash,build-version文件:

$ tree -L 1

Ubuntu18.04 配置 LibTorch_第3张图片

  • lib/文件夹:包含必须链接的共享库;
  • include/文件夹:包含程序需要包含的头文件;
  • share/文件夹:包含必要的 CMake 配置,以启用上面的简单find_package(Torch)命令。

解决 tree 命令 出现乱码:

$ alias tree='tree --charset ASCII'

2. 配置并测试

在 ~/libtorch/ 新建文件夹:example

$ mkdir example
$ cd example/

2.1 方法–官方cmake 例子

  1. 编写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)
    
  2. 编写 example-app.cpp 程序,实现将简单地创建一个新的torch :: Tensor并将其打印出来,代码如下:

    #include 
    #include 
    
    int main() {
           
      torch::Tensor tensor = torch::rand({
           2, 3});
      std::cout << tensor << std::endl;
    }
    
    
  3. cmake 编译
    构建应用程序,目录的布局如下:
    在这里插入图片描述
    example/ 文件夹中新建 build 文件夹,用来编译程序:

    $ mkdir build
    $ cd build	
    

    执行编译命令:

    #cmake -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch ..
    $ cmake -DCMAKE_PREFIX_PATH=/XXXX/libtorch ..
    

    Ubuntu18.04 配置 LibTorch_第4张图片
    因为我使用了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.2 方法2

方法2和方法1的区别是,在cmakelists.txt文件中配置了所需的环境,不用每次在命令中设置参数,并且这里libtorch和opencv4.3一起使用的,其中cpp文件依然使用example-app.cpp,有的命令操作均在build 目录下进行,具体过程如下:

  1. 编写 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)
    
  2. 执行编译

    $ cmake ..
    

    Ubuntu18.04 配置 LibTorch_第5张图片
    同样这里会有关于cuda的warning,不用管它。

  3. make

    $ make
    

    在这里插入图片描述

  4. 执行测试

    ./example
    

    在这里插入图片描述

参考链接:

  1. https://pytorch.org/
  2. 安装PyTorch的C++发行版
  3. 官方 C++ API 英文文档:https://pytorch.org/cppdocs
  4. 第三方 C++ API 中文文档:https://s0pytorch0org.icopy.site/cppdocs
  5. 官方 PyTorch 中文教程 :https://pytorch.apachecn.org/

你可能感兴趣的:(PyTorch,Linux,LibTorch,配置,LibTorch,libtorch,PyTorch)