未验证 提交 969cfc19 编写于 作者: P Pei Yang 提交者: GitHub

add jetson inference compile doc. (#1665)

* add jetson compile doc. test=develop

* add jetson compile doc. test=develop, test=document_preview
上级 46993cf9
......@@ -26,25 +26,43 @@
----------
用户也可以从 PaddlePaddle 核心代码编译C++预测库,只需在编译时配制下面这些编译选项:
============================ =============
选项 值
============================ =============
CMAKE_BUILD_TYPE Release
FLUID_INFERENCE_INSTALL_DIR 安装路径
WITH_PYTHON OFF(推荐)
ON_INFER ON(推荐)
WITH_GPU ON/OFF
WITH_MKL ON/OFF
============================ =============
============================ ============= ==================
选项 值 说明
============================ ============= ==================
CMAKE_BUILD_TYPE Release 编译方式,仅使用预测库设为Release即可
FLUID_INFERENCE_INSTALL_DIR 安装路径 预测库安装路径
WITH_PYTHON OFF(推荐) 编译python预测库与whl包
ON_INFER ON(推荐) 预测时使用,必须设为ON
WITH_GPU ON/OFF 编译支持GPU的预测库
WITH_MKL ON/OFF 编译支持MKL的预测库
WITH_MKLDNN ON/OFF 编译支持MKLDNN的预测库
WITH_XBYAK ON 使用XBYAK编译,在jetson硬件上编译需要设置为OFF
WITH_NV_JETSON OFF 在NV Jetson硬件上编译时需要设为ON
============================ ============= ==================
建议按照推荐值设置,以避免链接不必要的库。其它可选编译选项按需进行设定。
下面的代码片段从github拉取最新代码,配制编译选项(需要将PADDLE_ROOT替换为PaddlePaddle预测库的安装路径):
首先从github拉取最新代码并安装nccl
.. code-block:: bash
git clone https://github.com/paddlepaddle/paddle
# 建议使用git checkout切换到Paddle稳定的版本,如:
git checkout v1.6.2
git clone https://github.com/NVIDIA/nccl.git
make -j4
make install
**note**: 单卡机器上不会用到nccl但仍存在依赖, 后续会考虑将此依赖去除。
**Server端预测库源码编译**
下面的代码片段配制编译选项并进行编译(需要将PADDLE_ROOT替换为PaddlePaddle预测库的安装路径):
.. code-block:: bash
PADDLE_ROOT=/path/of/capi
git clone https://github.com/PaddlePaddle/Paddle.git
PADDLE_ROOT=/path/of/paddle
cd Paddle
mkdir build
cd build
......@@ -58,7 +76,79 @@ WITH_MKL ON/OFF
make
make inference_lib_dist
成功编译后,使用C++预测库所需的依赖(包括:(1)编译出的PaddlePaddle预测库和头文件;(2)第三方链接库和头文件;(3)版本信息与编译选项信息)
**NVIDIA Jetson嵌入式硬件预测库源码编译**
NVIDIA Jetson是NVIDIA推出的嵌入式AI平台,Paddle Inference支持在 NVIDIA Jetson平台上编译预测库。具体步骤如下:
1. 准备环境
开启硬件性能模式
.. code-block:: bash
sudo nvpmodel -m 0 && sudo jetson_clocks
如果硬件为Nano,增加swap空间
.. code-block:: bash
#增加DDR可用空间,Xavier默认内存为16G,所以内存足够,如想在Nano上尝试,请执行如下操作。
sudo fallocate -l 5G /var/swapfile
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'
2. 编译Paddle Inference预测库
.. code-block:: bash
cd Paddle
mkdir build
cd build
cmake .. \
-DWITH_CONTRIB=OFF \
-DWITH_MKL=OFF \
-DWITH_MKLDNN=OFF \
-DWITH_TESTING=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DON_INFER=ON \
-DWITH_PYTHON=OFF \
-DWITH_XBYAK=OFF \
-DWITH_NV_JETSON=ON
make -j4
# 生成预测lib
make inference_lib_dist -j4
3. 样例测试
请参照官网样例:https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_usage/deploy/inference/paddle_tensorrt_infer.html#id2
**FAQ**
1. 报错:
.. code-block:: bash
ERROR: ../aarch64-linux-gpn/crtn.o: Too many open files.
则增加系统同一时间最多可开启的文件数至2048
.. code-block:: bash
ulimit -n 2048
2. 编译卡住
可能是下载第三方库较慢的原因,耐心等待或kill掉编译进程重新编译
3. 使用TensorRT报错IPluginFactory或IGpuAllocator缺少虚析构函数
下载安装TensorRT后,在NvInfer.h文件中为class IPluginFactory和class IGpuAllocator分别添加虚析构函数:
.. code-block:: bash
virtual ~IPluginFactory() {};
virtual ~IGpuAllocator() {};
成功编译后,使用C++预测库所需的依赖(包括:(1)编译出的PaddlePaddle预测库和头文件;(2)第三方链接库和头文件;(3)版本信息与编译选项信息)
均会存放于PADDLE_ROOT目录中。目录结构如下:
.. code-block:: text
......@@ -88,8 +178,6 @@ WITH_MKL ON/OFF
│   ├── mkldnn
│   ├── mklml
│   ├── protobuf
│   ├── snappy
│   ├── snappystream
│   ├── xxhash
│   └── zlib
└── version.txt
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册