VScode + libtorch配置

配置选项:基于Linux,VScode + libtorch

步骤一:libtorch下载(DEBUG版本)
前往libtorch官网https://pytorch.org/get-started/locally/,选择对应版本的libtorch进行下载
解压完成后,放入D盘或者其他位置,记录其路径即可。

步骤二:安装VScode(这边不再赘述),安装完成后,从官网下载cmake进行安装,这边不推荐通过VScode自带的Extensions增加cmake和cmake tools模块。

步骤三:安装好VScode后,新建项目,然后新建main.cpp,然后逐个配置CMakeLists.txt,launch.json,tasks.json,c_cpp_properties.json文件。

main.cpp 代码如下:

#include<torch/script.h>
#include<torch/torch.h>

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;
}

CMakeLists.txt配置如下:

cmake_minimum_required(VERSION 3.29.0 FATAL_ERROR)
project(main VERSION 0.1.0)

set(Torch_DIR "[你的libtorch目录]/include/torch")
find_package(Torch REQUIRED)

message(STATUS "torch path: ${Torch_DIR}")

add_executable(main main.cpp)
link_directories(${TORCH_LIBRARIES})
set(TORCH_LIBRARIES "[你的libtorch目录]/include/torch/**" "[你的libtorch目录]/include/torch/csrc/api/include/torch/**")
target_link_libraries(main ${TORCH_LIBRARIES})

set_property(TARGET PROJECT1 PROPERTY CXX_STANDARD 17)

launch.json 代码如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg", //
            "request": "launch", 
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [], //往可执行文件传参
            "stopAtEntry": false,
            "cwd": "${fileDirname}", //进入当前目录
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files (x86)\\mingw64\\bin\\gdb.exe", //调试器路径
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
            //在调试之前要做的工作,生成可执行文件
            //对应于tasks.json的label
        }
    ]
}

tasks.json配置如下:


{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\Program Files (x86)\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: C:\\Program Files (x86)\\mingw64\\bin\\g++.exe"
        }
    ],
    "version": "2.0.0"
}

需要在c_cpp_properties.json中配置除workspaceFolder外的其他链接地址,"cStandard": "c17",选择C++ 17语言标准:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "[你的libtorch地址]/include/torch/**",
                "[你的libtorch地址]/include/torch/csrc/api/include/torch/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:\\Program Files (x86)\\mingw64\\bin\\gcc.exe",
            "cStandard": "c17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

### 配置VSCode以支持LibTorch开发 #### 安装依赖库 为了使LibTorch能够在Linux环境中正常工作,安装必要的依赖项至关重要。这通常包括CMake、GCC编译器以及可能需要的其他工具链组件[^1]。 ```bash sudo apt-get update && sudo apt-get install -y cmake g++ git libomp-dev wget unzip ``` #### 下载并解压LibTorch 获取官方发布的预构建二进制文件是最简便的方法之一来部署LibTorch到本地机器上。下载完成后将其放置在一个合适的位置,并创建软链接以便于访问。 ```bash wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-1.10.0%2Bcpu.zip unzip libtorch*.zip -d /opt/ ln -s /opt/libtorch /opt/libtorch_latest ``` #### 设置环境变量 为了让项目能够找到所需的头文件和共享库,在`.bashrc`或其他shell配置脚本中添加相应的路径是非常有帮助的做法。 ```bash echo 'export LIBTORCH_ROOT=/opt/libtorch' >> ~/.bashrc source ~/.bashrc ``` #### 创建新的C++工程模板 建立一个新的目录作为项目的根目录,并初始化基本结构。这里提供了一个简单的例子说明如何组织源码文件夹及其子模块。 ```cpp // main.cpp #include <torch/torch.h> int main() { torch::Tensor tensor = torch::rand({2, 3}); std::cout << "Your first tensor:\n" << tensor << "\n"; } ``` #### 编写CMakeLists.txt 编写一个合适的 `CMakeLists.txt` 文件对于自动化构建过程来说非常重要。下面是一个适用于大多数情况的基础版本。 ```cmake cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(LibTorchExample LANGUAGES CXX VERSION 1.0) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_EXTENSIONS OFF) find_package(Torch REQUIRED) add_executable(hello_world main.cpp) target_link_libraries(hello_world "${TORCH_LIBRARIES}") set_property(TARGET hello_world PROPERTY CXX_STANDARD 14) if (UNIX AND NOT APPLE) target_compile_options(hello_world PRIVATE "-D_GLIBCXX_USE_CXX11_ABI=0") endif() ``` #### VSCode插件推荐 在Visual Studio Code里安装一些辅助性的扩展可以极大地提高工作效率。特别是针对C/C++编程的支持包,像[C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) 和 [CMake Tools](https://marketplace.visualstudio.com/items?itemName=vector-of-bool.cmake-tools)[^2]。 #### 远程连接至服务器(如果适用) 当目标是在远程主机比如通过Slurm调度系统的高性能计算集群上来运行程序时,则需考虑采用SSH方式连入目标节点执行命令或者调试作业[^4]。此时可借助Remote Development功能实现无缝切换操作界面的同时保持底层资源的有效利用效率最大化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值