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官方安装文档