Jetson Xavier NX (ARM) 使用 PyTorch 安装 Open3D-ML 指南

由于 Jetson 为 ARM64 (aarch64) 的系统架构,所以不能用 pip install 直接安装,需要通过源码编译。

升级系统 JetPack

由于 Open3D-ML 目前只支持 CUDA 10.0 以及 CUDA 11.*,并且 JetPack 的 CUDA 开发环境只有10.2、11.4以及12.2,所以我们只能选择 CUDA 11.4 进行安装。

使用 jtop命令查看 JetPack 版本。如果 Jetson 系统的 JetPack 低于 5.1.2 则需要通过 SDK Manager 升级到 JetPack 5.1.2。

如果你的系统已经是 JetPack 5.1.2 那我也推荐你通过 SDK Manager 重新安装一遍,排除难以发现的错误。

详细指南参考文章[Jetson Xavier NX 升级或重新安装 JetPack 指南]。

安装 PyTorch

安装教程参考文章[Jetson Xavier NX 安装 CUDA 支持的 Pytorch 指南]。

注意,PyTorch 的 CUDA 支持版本需要和 Open3D-ML 的一致,同为 CUDA 11.4。否则与最后安装 Open3D-ML 的时候会报错:

下载源码

下载 Open3D 源码

如果你之前下载过则不需要再下载:

git clone https://github.com/isl-org/Open3D.git

下载 Open3D-ML 源码

git clone https://github.com/isl-org/Open3D-ML.git

前提准备

安装依赖:

cd Open3D
bash util/install_deps_ubuntu.sh
pip install yapf

重新链接 6.0.29 的 libstdc++.so,否则会出现undefined reference to 'std::__throw_bad_array_new_Length()@GLIBCXX_3.4.29'的错误。

ln -sf /usr/local/lib64/libstdc++.so.6.0.29 /lib/aarch64-linux-gnu/libstdc++.so.6

编译安装

国际惯例,先创建一个 build 文件夹。

mkdir build
cd build
sudo cmake \
-DBUILD_CUDA_MODULE=ON \
-DBUILD_PYTORCH_OPS=ON \
-DBUILD_TENSORFLOW_OPS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DGLIBCXX_USE_CXX11_ABI=ON \
-DBUILD_PYTHON_MODULE=ON \
-DBUNDLE_OPEN3D_ML=ON \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DPython3_EXECUTABLE=/path/to/python \
-DOPEN3D_ML_ROOT=../../Open3D-ML \
..

-DBUILD_PYTORCH_OPS-DBUILD_TENSORFLOW_OPS分别为构建 PyTorch 版和构建 Tensorflow 版选项,两个选择可以同时为ON,本指南只构建 PyTorch。

-DBUILD_EXAMPLES表示是否构建官方示例,这里设置OFF不构建,可以缩短构建时间。

如果没有使用 Python 虚拟环境,则不需要-DPython3_EXECUTABLE;如果使用了 Python 虚拟环境,需要改成虚拟环境的 Python 的路径,使用which python查看路径。

-DOPEN3D_ML_ROOT为刚刚下载的 Open-ML 的源代码路径。

编译:

make -j$(nproc)

编译过程需要数个小时的时间。

编译完毕后需要添加一个环境变量:

vim ~/.zsh #或者 ~/.bashrc

在文件末尾添加一行:

export LD_PRELOAD=/usr/local/lib/libOpen3D.so

安装 Open3D C++ 库:

make install

安装 Open3D 与 Open3D-ML Python 库:

make install-pip-package -j$(nproc)

错误解决

undefined reference to '***' @GLIBCXX_3.4.29

这个错误问题出在系统的 libstdc++ 版本不够高。尝试使用strings /lib/aarch64-linux-gnu/libstdc++.so.6 | grep GLIBCXX命令查看 libstdc++ 是否支持 GLIBCXX_3.4.29,如果缺少 GLIBCXX_3.4.29 则请尝试软链接 libstdc++.so.6 到正确版本。

ln -sf /usr/local/lib64/libstdc++.so.6.0.29 /lib/aarch64-linux-gnu/libstdc++.so.6

如果提示找不到 libstdc++.so.6.0.29 文件,则请升级 libstdc++ 库。

CMAKE_CUDA_ARCHITECTURES now detected for NVCC

检查系统默认 CUDA 版本是否存在 nvcc 二进制文件。

sudo stat /usr/local/cuda/bin/nvcc

若提示不存在文件,则 CUDA 开发环境已经损坏,需要重新安装 JetPack。详细参考文章 [Jetson Xavier NX 升级或重新安装 JetPack 指南]。

/lib/Release/libOpen3D.so: cannot allocate memory in static TLS block

vim ~/.zsh #或者 ~/.bashrc

在文件末尾添加一行:

export LD_PRELOAD=/usr/local/lib/libOpen3D.so

ModuleNotFoundError: No module named ‘jupyter_packaging’

pip install jupyter-packaging

ModuleNotFoundError: No module named ‘ipywidgets’

pip install ipywidgets

Open3D was built with CUDA 11.4 but PyTorch was built with CUDA 10.2

这个警告表示,PyTorch 的 CUDA 版本和 Open3D-ML 的 CUDA 版本不一致。需要使用与 Open3D-ML 一致的 CUDA 版本重新构建安装 PyTorch。详细请参考文章[Jetson Xavier NX 安装 CUDA 支持的 Pytorch 指南]。

测试验证

python3 -c "import open3d.ml.torch"

若无任何输出,则表示安装成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/960116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系统】进程间通信:进程池

进程池的结构图示如下: 一、初始化进程池 1、创建多个子进程 通过 main 命令行参数获取需要创建子进程的个数 判断 argc 个数,使用 usage 提示 在编程和命令行工具中,“usage” 通常指的是命令或程序的使用说明,即如何正确使用该…

【问题解决】el-upload数据上传成功后不显示成功icon

el-upload数据上传成功后不显示成功icon 原因 由于后端返回数据与要求形式不符,使用el-upload默认方法调用onSuccess钩子失败,上传文件的状态并未发生改变,因此数据上传成功后并未显示成功的icon标志。 解决方法 点击按钮,调用…

怎样在PPT中启用演讲者视图功能?

怎样在PPT中启用演讲者视图功能? 如果你曾经参加过重要的会议或者演讲,你就会知道,演讲者视图(Presenter View)对PPT展示至关重要。它不仅能帮助演讲者更好地掌控演讲节奏,还能提供额外的提示和支持&#…

【2025年数学建模美赛F题】(顶刊论文绘图)模型代码+论文

全球网络犯罪与网络安全政策的多维度分析及效能评估 摘要1 Introduction1.1 Problem Background1.2Restatement of the Problem1.3 Literature Review1.4 Our Work 2 Assumptions and Justifications数据完整性与可靠性假设:法律政策独立性假设:人口统计…

MapReduce,Yarn,Spark理解与执行流程

MapReduce的API理解 Mapper 如果是单词计数:hello:1, hello:1, world:1 public void map(Object key, // 首字符偏移量Text value, // 文件的一行内容Context context) // Mapper端的上下文,…

如何让Dev-C++支持C++11及以上标准

目录 问题描述解决方案步骤1&#xff1a;打开编译选项 问题描述 在Dev-C中使用C11/17/20新特性&#xff08;如pop_back()等&#xff09;时&#xff0c;可能出现编译错误&#xff1a; #include <iostream> #include<string> using namespace std; int main() {str…

springBoot 整合ModBus TCP

ModBus是什么&#xff1a; ModBus是一种串行通信协议&#xff0c;主要用于从仪器和控制设备传输信号到主控制器或数据采集系统&#xff0c;例如用于测量温度和湿度并将结果传输到计算机的系统。&#xff08;百度答案&#xff09; ModBus 有些什么东西&#xff1a; ModBus其分…

linux常用加固方式

目录 一.系统加固 二.ssh加固 三.换个隐蔽的端口 四.防火墙配置 五.用户权限管理 六.暴力破解防护 七.病毒防护 八.磁盘加密 九.双因素认证2FA 十.日志监控 十一.精简服务 一.系统加固 第一步&#xff1a;打好系统补丁 sudo apt update && sudo apt upgra…

const的用法

文章目录 一、C和C中const修饰变量的区别二、const和一级指针的结合const修饰的量常出现的错误是:const和一级指针的结合总结&#xff1a;const和指针的类型转换公式 三、const和二级指针的结合 一、C和C中const修饰变量的区别 C中&#xff1a;const必须初始化&#xff0c;叫常…

Arduino大师练成手册 -- 控制 MH-SD 卡模块

要在 Arduino 上控制 MH-SD 卡模块&#xff0c;你可以按照以下步骤进行&#xff1a; 硬件连接 VCC&#xff1a;连接到 Arduino 的 3.3V 或 5V 引脚&#xff08;根据模块的要求&#xff09;。 GND&#xff1a;连接到 Arduino 的 GND 引脚。 CS&#xff1a;连接到 Arduino 的…

Android OpenGL(六) 纹理

纹理 纹理是一个2D图片&#xff08;甚至也有1D和3D的纹理&#xff09;&#xff0c; 它可以用来添加物体的细节&#xff1b;你可以想象纹理是一张绘有砖块的纸&#xff0c;无缝折叠贴合到你的3D的 房子上&#xff0c;这样你的房子看起来就像有砖墙外表了 纹理环绕方式 纹理坐…

一文大白话讲清楚webpack基本使用——18——HappyPack

文章目录 一文大白话讲清楚webpack基本使用——18——HappyPack1. 建议按文章顺序从头看&#xff0c;一看到底&#xff0c;豁然开朗2. 啥是HappyPack3. 怎么使用HappyPack 一文大白话讲清楚webpack基本使用——18——HappyPack 1. 建议按文章顺序从头看&#xff0c;一看到底&a…

深入 Rollup:从入门到精通(二)Rollup简介

1. 简介 对于将rollup描述为一个打包工具&#xff0c;我觉得并不是很精准&#xff0c;稍有些笼统&#xff0c;未能完全展示它的功能。 我更倾向于将它定义为&#xff1a; 以模块化的方式加载你的 js 文件&#xff08;如果使用插件&#xff0c;也可以支持其他静态资源文件&…

【数据结构】_C语言实现不带头非循环单向链表

目录 1. 链表的概念及结构 2. 链表的分类 3. 单链表的实现 3.1 SList.h头文件 3.2 SList.c源文件 3.3 Test_SList.c测试文件 关于线性表&#xff0c;已介绍顺序表&#xff0c;详见下文&#xff1a; 【数据结构】_顺序表-CSDN博客 本文介绍链表&#xff1b; 基于顺序表…

HTML5 Web Worker 的使用与实践

引言 在现代 Web 开发中&#xff0c;用户体验是至关重要的。如果页面在执行复杂计算或处理大量数据时变得卡顿或无响应&#xff0c;用户很可能会流失。HTML5 引入了 Web Worker&#xff0c;它允许我们在后台运行 JavaScript 代码&#xff0c;从而避免阻塞主线程&#xff0c;保…

Excel 技巧21 - Excel中整理美化数据实例,Ctrl+T 超级表格(★★★)

本文讲Excel中如何整理美化数据的实例&#xff0c;以及CtrlT 超级表格的常用功能。 目录 1&#xff0c;Excel中整理美化数据 1-1&#xff0c;设置间隔行颜色 1-2&#xff0c;给总销量列设置数据条 1-3&#xff0c;根据总销量设置排序 1-4&#xff0c;加一个销售趋势列 2&…

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…

倍频增量式编码器--角度插值法输出A,B(Aangular Interpolation)

问题是&#xff1a; 最大速度&#xff0c;周期刻度&#xff0c;最小细分刻度&#xff0c;可以计算得到&#xff1a; 结论&#xff1a; 按照最高速度采样&#xff1b;数字A,B输出间隔时间&#xff1a;按照计算角度 插入细分角度运算算时间&#xff08;最快速度&#xff09;&a…

基于微信小程序的助农扶贫系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

嵌入式C语言:结构体对齐

目录 一、对齐的原因 1.1. 硬件访问效率 1.2. 内存管理简化 1.3. 编译器优化 1.4. 代码示例 二、对齐规则 2.1. 基本数据类型对齐 2.2. 结构体成员对齐 2.3. 结构体整体对齐 2.4. 代码示例 三、对齐控制 3.1. 使用 #pragma pack 3.2. 使用 __attribute__((packed)…