VSCode配置之LibTorch(GPU)极简配置 & VS2022 LibTorch(GPU)验证

  1. 背景
    a) 最近在尝试将Pytorch模型部署为Cmodel,综合实验了ONNX和LibTorch方法,其中ONNX模型推理见之前系列文章(OpenCV----YOLOv7目标检测模型推理、OpenCV----YOLOv5目标检测模型推理 (兼容YOLACT)等),存在一些模型可以导出为ONNX但OpenCV的readNet读取错误的情况(主要原因是部分算子不太支持),因此,LibTorch成为了备选方案之一。由于LibTorch是官方Pytorch的部署模型之一,更新也比较及时,特记录一下配置过程。
  2. 软件环境
    LibTorch 1.12.1 Release版本 (GPU版本依赖于CUDA 11.6和CUDANN)
    VSCode+CMake
    VS Studio 2022
    系统环境变量添加:path\to\libtorch\lib
  3. VSCode + LibTorch CPU版本配置(LibTorch GPU兼容CPU版本)
    1)测试代码
    #include
    #include
    using namespace std;
    int main()
    {
        torch::Tensor output;
        cout << "cuda is_available: " << torch::cuda::is_available() << endl;
        torch::DeviceType device = at::kCPU; 
        if (torch::cuda::is_available())
            device = at::kCUDA;
        output = torch::randn({ 3,3 }).to(device);
        cout << output << endl;
        return 0;
    }
    
    2)CMakeLists.txt (编译方法参见另一篇博客VSCode配置之Opencv4x终极奥义)
    cmake_minimum_required(VERSION 3.17)
    set(CMAKE_PREFIX_PATH path/to/libtorch/share/cmake/Torch/)
    find_package( Torch REQUIRED)
    set(CMAKE_CXX_STANDARD 14)
    add_executable(test test.cpp)
    target_link_libraries(test ${TORCH_LIBRARIES})
    
    3)输出结果
    VSCode配置之LibTorch(GPU)极简配置 & VS2022 LibTorch(GPU)验证_第1张图片
  4. VS2022 LibTorch GPU版本配置
    1)测试代码(同上)
    #include
    #include
    using namespace std;
    int main()
    {
        torch::Tensor output;
        cout << "cuda is_available: " << torch::cuda::is_available() << endl;
        torch::DeviceType device = at::kCPU; 
        if (torch::cuda::is_available())
            device = at::kCUDA;
        output = torch::randn({ 3,3 }).to(device);
        cout << output << endl;
        return 0;
    }
    
    2)项目属性表配置
    C/C++目录 -> 附加包含目录新增
    path\to\libtorch\include\torch\csrc\api\include;
    path\to\libtorch\include;
    
    链接器 -> 常规 -> 附加库目录新增
    path\to\libtorch\lib
    
    链接器 -> 输入 -> 附加依赖项
    c10.lib
    c10_cuda.lib
    torch_cpu.lib
    torch_cuda.lib
    torch_cuda_cu.lib
    torch_cuda_cpp.lib
    -INCLUDE:?warp_size@cuda@at@@YAHXZ
    
    链接器 -> 命令行 -> 其它选项新增 (用于CUDA推理)
    /INCLUDE:?warp_size@cuda@at@@YAHXZ 
    /INCLUDE:?_torch_cuda_cu_linker_symbol_op_cuda@native@at@@YA?AVTensor@2@AEBV32@@Z 
    
    3)输出结果
    VSCode配置之LibTorch(GPU)极简配置 & VS2022 LibTorch(GPU)验证_第2张图片
  5. 小结
    可以看到,VSCode+CMake简单配置即可实现VS2022一系列复杂的配置过程,对于代码编写更友好,由于VSCode断点调试较复杂,必要时还是需要VS Studio的辅助,尤其是针对新的库,调试能力必不可少。

你可能感兴趣的:(C++,VSCode,vscode,LibTorch,CMake,VS2022)