当前位置: 首页 > news >正文

JetsonOrin源码安装部署PaddlePaddle

Jetson Orin 源码安装部署Paddle

部署环境

系统架构: Arm
CUDA: 11.4
cmake: 3.18.0
python:3.8
在这里插入图片描述

注意环境中的版本问题,之前装onnxruntime的时候cmake被升级到了3.31.0,但是编译Paddle时会报错,因此特意降级回了官方推荐的3.18.0

具体环境版本参考官方依赖表

源码下载

Paddle官方提供预编译版本的推理库,可自行查找有没有适合自己系统环境的版本。不同的Paddle版本对应的预编译库也不一样。
这里我们选择源码编译安装。经过测试,在Paddle2.3、2.6、3.0中选择了 2.3 版本,因为2.6和3.0依赖的python路径需要非常的全,尝试使用了virtualenvwrapper也不行。
下载程序源码

git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
git checkout release/2.3

编译安装

这一步非常重要,官方文档中并没有说明ARM架构需要配置和关掉哪些选项,如果你遇到了大量莫名其妙的报错,那么大概率是cmake时的配置问题

mkdir build_cuda && cd build_cuda
cmake .. -DPY_VERSION=3.8 -DWITH_TESTING=ON -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_PYTHON=ON -DWITH_XBYAK=OFF -DWITH_CONTRIB=OFF -DWITH_MKL=OFF -DWITH_MKLDNN=OFF -DWITH_GPU=ON -DWITH_ARM=ON -DWITH_NV_JETSON=ON -DWITH_NCCL=OFF -DCUDA_ARCH_NAME=All -DWITH_TENSORRT=ON -DTENSORRT_ROOT=/usr -DCMAKE_CXX_FLAGS='-Wno-error -w' ..

具体每个参数的含义可参考下面的错误举例
cmake成功之后开始编译,8个核时间大概一下午

make -j8

编译飞桨过程中可能会打开很多文件,如果编译过程中显示 “Too many open files” 错误时,请使用指令 ulimit -n 102400 来增大当前进程允许打开的文件数

ulimit -n 102400

编译成功后可在 dist 目录找到生成的 .whl 包

pip3 install python/dist/[wheel 包名字]

编译 C++推理库,很快

make inference_lib_dist -j4

编译成功后,所有产出均位于 build 目录下的 paddle_inference_install_dir 目录内。

错误举例

  • c++: error: unrecognized command line option ‘-m64’
    现象:第三方库的flag.make里都带有 CXX_FLAGS = -Wno-error=deprecated-declarations -Wno-deprecated-declarations -std=c++14 -m64 -fopenmp -O3 -DNDEBUG
    原因:cmake时没有启用 -DWITH_ARM=ON
  • /Paddle/paddle/phi/backends/dynload/nvjpeg.h:14:10: fatal error: nvjpeg.h: No such file or directory: cmake时没有启用 -DWITH_NV_JETSION=ON
  • /usr/bin/ld: cannot find -liomp5: cmake时没有关闭MKL,设置-DWITH_MKL=OFF -DWITH_MKLDNN=OFF
  • /Paddle/paddle/phi/api/lib/api_gen_utils.cc:44:19: note: remove ‘std::move’ call : cmake时没有启用-DCMAKE_CXX_FLAGS=‘-Wno-error -w’ 导致警告升级为错误

参考

fatal error: nvjpeg.h: No such file or directory
nvjpeg.h: No such file or directory
Paddle官方安装文档

相关文章:

  • 【java】集合的基本使用
  • [Linux][经验总结]Ubuntu6.11.0 docker更换镜像源(实操可用的正确方法)
  • 深入解析前后端分离架构:原理、实践与最佳方案
  • 算法手记5
  • ngx_event_conf_t
  • Qt事件处理(重写event)
  • nginx不在默认的yum仓库的解决方法
  • libstdc++ GLIBCXX_3.4.20 not found 解决方法
  • 计算机毕业设计:基于SSM理发店造型中心网上预约评价系统
  • C11标准对于C语言的内存模型的描述
  • C++ 返回值优化(Return Value Optimization)
  • 学习TensorFlow前的NumPy核心知识点
  • C++学习之二叉树
  • S32K144入门笔记(十五):ADC(转换器部分)的解读
  • windows安装Elasticsearch
  • 科普:为何要对特征进行分箱?
  • C++单例模式精解
  • OSG 和 VTK 在JS仿真中应用的更详细对比分析,包括它们的技术特点、适用场景、优缺点以及如何选择或结合使用
  • softmax回归遇到的训练集准确率小于测试集准确率的问题
  • 【MySQL】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法
  • 海珠免费网站建设/视频广告
  • 竞价网站做seo/铜川网络推广
  • 网页设计师技术水平证书/东莞网站推广优化网站
  • 动态网站建设论文/上海seo推广方法
  • 公司网站平台/seo有名气的优化公司
  • 高端网站建设的品牌/关于新品牌的营销策划