libtorch升级

在将libtorch从1.4更新到1.7后,遇到所有tensor方法无法使用的错误。原因是1.7版本的libtorch大小显著减小为8KB,而原本的功能被分离到名为libtorch_cpu的200M新库中。为解决此问题,需要在编译时动态链接这个新库。

最近将libtorch从1.4升级到1.7导致了所有的tensor方法都不能使用。编译报错如下:
在这里插入图片描述
这是由于1.4时libtorch为200M,但在1.7时libtorch仅为8KB。
在这里插入图片描述

而200M的却是名为libtorch_cpu的新库,在编译的动态链接库中添加这个库即可解决。

<think>我们正在讨论在Jetson设备上安装LibTorch。由于Jetson设备基于ARM架构,我们需要下载适用于ARM的LibTorch版本。 步骤: 1. 确定Jetson设备的操作系统版本(通常是Ubuntu 18.04或20.04)和架构(aarch64)。 2. 访问PyTorch官网的LibTorch下载页面,选择适合的版本(通常是C++版本,Linux,LibTorch,aarch64)。 3. 下载LibTorch压缩包。 4. 解压缩到设备上的合适位置。 5. 设置环境变量或在CMake项目中指定LibTorch路径。 注意:由于Jetson设备是ARM架构,不能直接使用x86的预编译版本,必须选择ARM版本。 具体步骤: 1. 访问PyTorch官网的先前版本页面(因为最新版本的PyTorch可能没有提供aarch64的LibTorch,但1.8.0及之后有提供): https://pytorch.org/get-started/previous-versions/ 2. 找到适用于Linux aarch64的LibTorch下载链接。例如,对于LibTorch 1.13.0(需要与你的JetPack版本中的CUDA版本匹配),可以选择: - 对于CUDA 11.6:https://download.pytorch.org/libtorch/cu116/libtorch-cxx11-abi-shared-with-deps-1.13.0%2Bcu116.zip - 但是注意,Jetson设备通常使用JetPack,其CUDA版本可能不同,请先确认CUDA版本(使用`nvcc --version`)。 3. 使用wget下载,例如: ```bash wget https://download.pytorch.org/libtorch/cu116/libtorch-cxx11-abi-shared-with-deps-1.13.0%2Bcu116.zip ``` 4. 解压: ```bash unzip libtorch-cxx11-abi-shared-with-deps-1.13.0%2Bcu116.zip ``` 5. 将解压后的libtorch文件夹移动到合适的位置,例如`/usr/local`,或者保留在当前项目目录中。 6. 在CMake项目中配置: 在CMakeLists.txt中添加: ```cmake cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(example) set(CMAKE_PREFIX_PATH /path/to/libtorch) # 设置LibTorch的路径 find_package(Torch REQUIRED) add_executable(example example.cpp) target_link_libraries(example "${TORCH_LIBRARIES}") set_property(TARGET example PROPERTY CXX_STANDARD 14) ``` 7. 编译运行。 注意:如果下载的是不带CUDA的版本(即CPU版本),则不需要CUDA支持。但通常Jetson设备我们希望使用GPU,因此应下载支持CUDA的版本。 另外,也可以考虑从源码编译LibTorch,但过程较为复杂。 由于网络问题,也可以考虑使用国内镜像,例如清华源。但注意PyTorch官网下载链接可能需要直接访问。 问题:如何确认CUDA版本? 在终端输入: nvcc --version 例如,输出可能是: nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Feb_28_22:34:44_PST_2021 Cuda compilation tools, release 10.2, V10.2.300 那么就需要下载对应CUDA 10.2的LibTorch版本。 但是注意:PyTorch官方提供的预编译版本可能没有支持CUDA 10.2的最新版本,可能需要使用较旧的PyTorch版本(如1.7.1)。 因此,步骤调整为: 1. 查看CUDA版本 2. 在PyTorch先前版本页面查找对应CUDA版本的LibTorch下载链接。 例如,对于CUDA 10.2,可以下载1.7.1版本: https://download.pytorch.org/libtorch/cu102/libtorch-cxx11-abi-shared-with-deps-1.7.1%2Bcu102.zip 或者,也可以使用不带CUDA的CPU版本,但这样无法利用GPU加速。 如果找不到对应CUDA版本的预编译包,可以考虑从源码编译PyTorch(包括LibTorch),但这个过程在Jetson上可能耗时很长(几个小时)。 因此,推荐使用预编译版本。 总结步骤: 1. 确定CUDA版本:`nvcc --version` 2. 根据CUDA版本选择LibTorch版本,并下载对应的预编译包(aarch64)。 3. 解压并设置CMake路径。 注意:如果使用C++17,可能需要更新CMakeLists.txt中的C++标准。 下面是一个示例CMakeLists.txt: ```cmake cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(example) # 设置LibTorch路径,假设解压到当前目录下的libtorch set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/libtorch") find_package(Torch REQUIRED) add_executable(example example.cpp) target_link_libraries(example "${TORCH_LIBRARIES}") set_property(TARGET example PROPERTY CXX_STANDARD 14) # 或者17 ``` 编译时,确保CMake能够找到正确的工具链(Jetson上默认是aarch64-linux-gnu)。 编译命令: mkdir build cd build cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch .. make 如果遇到问题,可能需要设置OpenMP等其他依赖。 由于Jetson设备资源有限,建议在编译时关闭不必要的特性。 另外,如果下载的是共享库版本(文件名中有`shared-with-deps`),则已经包含了所有依赖(如CUDA、cuDNN等),但注意这些库可能和JetPack中已安装的版本不一致,可能导致冲突。如果出现冲突,可能需要使用静态库版本(但官方通常不提供静态库版本)或者从源码编译。 因此,另一种方法是使用PyTorch提供的Docker镜像,但这里我们讨论的是本地安装。 最后,如果遇到GLIBC版本问题,可能需要升级系统或使用与系统兼容的LibTorch版本。 综上所述,安装步骤需要根据具体的Jetson设备和JetPack版本进行调整。 相关问题: 1. 如何检查Jetson设备的CUDA版本? 2. 如果找不到匹配的预编译LibTorch版本怎么办? 3. 如何从源码编译LibTorch? 4. 在CMake项目中如何指定使用GPU版本的LibTorch? 5. 运行程序时出现找不到库的错误,如何解决?</think>### 在 Jetson 设备上安装 LibTorch 在 Jetson 设备(NVIDIA Jetson Nano/AGX Xavier/Xavier NX 等)上安装 LibTorch 需要选择 ARM 架构兼容版本,以下是详细步骤: --- #### 1. **确认系统环境** ```bash # 查看 JetPack 版本(包含 CUDA/cuDNN 信息) cat /etc/nv_tegra_release # 查看 CUDA 版本 nvcc --version # 查看架构(应为 aarch64) uname -m ``` > 📌 重要:记录 CUDA 版本(如 10.2/11.4),后续需匹配对应 LibTorch 版本。 --- #### 2. **下载 ARM 版 LibTorch** 访问 [PyTorch 官方历史版本库](https://download.pytorch.org/libtorch),选择: - **CUDA 版本**:匹配 Jetson 的 CUDA(如 JetPack 4.6 对应 CUDA 10.2) - **OS**:Linux - **架构**:aarch64 - **包类型**:`libtorch-cxx11-abi-shared-with-deps-*.zip` 示例命令(CUDA 10.2): ```bash wget https://download.pytorch.org/libtorch/cu102/libtorch-cxx11-abi-shared-with-deps-1.13.0%2Bcu102.zip unzip libtorch-cxx11-abi-shared-with-deps-1.13.0+cu102.zip ``` --- #### 3. **配置环境变量** ```bash # 添加 LibTorch 库路径 echo 'export LIBTORCH_HOME=/path/to/libtorch' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=$LIBTORCH_HOME/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc ``` --- #### 4. **验证安装** 创建 `test.cpp`: ```cpp #include <torch/torch.h> int main() { torch::Tensor tensor = torch::rand({2, 3}); std::cout << tensor << std::endl; return 0; } ``` 编译并运行: ```bash g++ test.cpp -o test -I $LIBTORCH_HOME/include -L $LIBTORCH_HOME/lib -ltorch -lc10 ./test ``` ✅ 成功输出随机矩阵即安装成功。 --- #### 常见问题解决 - **CUDA 版本不匹配**:在 [PyTorch 历史版本页面](https://pytorch.org/get-started/previous-versions/) 查找匹配版本[^1]。 - **缺失依赖**:安装基础依赖 `sudo apt install build-essential libopenblas-dev libopenmpi-dev`。 - **GLIBC 版本过低**:升级系统或选择更旧版 LibTorch。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

得食猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值