编译libtorch/pytorch

vs2017 64位

  1. git clone --recursive https://github.com/pytorch/pytorch.git

  2. Anaconda命令行
    也可以在build_windows.bat里设置

set CAFFE2_USE_MSVC_STATIC_RUNTIME=OFF
set BUILD_SHARED_LIBS=ON
set USE_CUDA=ON
set USE_NNPACK=OFF
set USE_MKL=OFF
set USE_TBB=ON
set USE_OPENMP=ON
set BUILD_CAFFE2_MOBILE=OFF
set BUILD_TEST=FALSE
set MAX_JOBS=2
set BLAS=OpenBLAS
set USE_NUMPY=FALSE
set MKL_THREADING=TBB

如果BUILD_TEST=TRUE,需要关闭杀毒软件,否则exe无法嵌入manifest导致失败。
如果不设置MAX_JOBS,内存会爆(内存>=16G,可以忽略)
如果CAFFE2_USE_MSVC_STATIC_RUNTIME=ON,生成build.ninja编译FLAGS是/MT,否则是/MD

tools\setup_helpers\cmake.py

elif var.startswith(('BUILD_', 'USE_', 'CMAKE_')):
改成
elif var.startswith(('BUILD_', 'USE_', 'CMAKE_', 'CAFFE2_', 'TORCH_')):

在cmake\Modules_CUDA_fix\FindCUDA.cmake里加上

SET(TORCH_CUDA_ARCH_LIST "5.0;5.2;6.0;6.1;7.0;7.5")

如果设置OpenBLAS,需要修改cmake\Modules\FindOpenBLAS.cmake

SET(OpenBLAS_INCLUDE_DIR "D:/WorkBench/.../openblas")
SET(OpenBLAS_LIB "D:/WorkBench/.../libopenblas.dll.a")
  1. scripts目录下运行
build_windows.bat

如果BUILD_SHARED_LIBS=OFF,1.3.1版本生成的lib会超过4G,结果link就失败了。
如果BUILD_SHARED_LIBS=ON,生成的dll会有1G多,下一步就是如何精简了。
Release模式,编译时更新torch.pdb,这一步很慢,让人受不了。。。

### 如何使用 LibTorch 安装 PyTorch #### 使用预构建二进制文件安装 LibTorch 对于大多数开发者而言,最简单的方法是从官方渠道获取预构建的 LibTorch 库。这允许快速设置环境而无需自行编译。 - 访问 [PyTorch官方网站](https://pytorch.org/) 并导航至下载页面。 - 选择适用于目标平台(Linux, Windows 或 macOS)以及所需版本LibTorch 版本。 - 下载完成后解压文件夹到指定位置[^1]。 ```bash tar -xvf libtorch-version.tar.gz --directory /desired/path/ ``` #### 设置开发环境 一旦获得了所需的库文件,则需将其路径添加到项目的 CMakeLists.txt 文件中以便于集成: ```cmake set(LIBTORCH_ROOT "/path/to/libtorch") find_package(Torch REQUIRED) add_executable(example-app main.cpp) target_link_libraries(example-app "${LIBTORCH_ROOT}/lib/libc10.so" "${LIBTORCH_ROOT}/lib/libcaffe2_protobuf-init.so" "${LIBTORCH_ROOT}/lib/libprotobuf.so" "${LIBTORCH_ROOT}/lib/libtorch_cpu.so") include_directories(${LIBTORCH_ROOT}/include ${LIBTORCH_ROOT}/include/torch/csrc/api/include) ``` 上述脚本假设已正确设置了 `LIBTORCH_ROOT` 变量指向所提取的 LibTorch 路径,并且包含了必要的头文件目录和链接器选项来创建应用程序[^3]。 #### 编写简单的测试程序验证安装情况 编写一段简单的代码用于加载并执行预先训练好的模型,以此检验安装过程是否顺利完成。 ```cpp #include <torch/script.h> #include <iostream> int main() { try { // 加载序列化的 TorchScript 模型 torch::jit::script::Module module; module = torch::jit::load("model.pt"); std::cout << "Model loaded successfully." << std::endl; // 准备输入张量 std::vector<torch::jit::IValue> inputs; inputs.push_back(torch::randn({1, 3})); // 运行推理 at::Tensor output = module.forward(inputs).toTensor(); std::cout << "Output tensor shape: " << output.sizes() << std::endl; } catch (const c10::Error& e) { std::cerr << "error loading the model\n"; return -1; } } ``` 当一切配置无误时,编译并运行这段代码应该能够看到类似于以下的消息:“Model loaded successfully.” 和输出张量形状的信息,表明调用成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值