安装与编译 Linux 预测库

    从源码编译

    用户也可以从 PaddlePaddle 核心代码编译C++预测库,只需在编译时配制下面这些编译选项:

    选项

    说明

    CMAKE_BUILD_TYPE

    Release

    编译方式,仅使用预测库设为Release即可

    FLUID_INFERENCE_INSTALL_DIR

    安装路径

    预测库安装路径

    WITH_PYTHON

    OFF(推荐)

    编译python预测库与whl包

    ON_INFER

    ON(推荐)

    预测时使用,必须设为ON

    WITH_GPU

    编译支持GPU的预测库

    WITH_MKL

    ON/OFF

    编译支持MKL的预测库

    WITH_MKLDNN

    ON/OFF

    编译支持MKLDNN的预测库

    WITH_XBYAK

    ON

    使用XBYAK编译,在jetson硬件上编译需要设置为OFF

    WITH_TENSORRT

    OFF

    编译支持NVIDIA TensorRT的预测库,需要另外配置TENSORRT_ROOT选项指定TRT根目录

    建议按照推荐值设置,以避免链接不必要的库。其它可选编译选项按需进行设定。

    首先从github拉取最新代码

    note: 如果您是多卡机器,建议安装NCCL;如果您是单卡机器则可以在编译时显示指定WITH_NCCL=OFF来跳过这一步。注意如果WITH_NCCL=ON,且没有安装NCCL,则编译会报错。

    1. cd nccl
    2. make -j4
    3. make install

    Server端预测库源码编译

    下面的代码片段配制编译选项并进行编译(需要将PADDLE_ROOT替换为PaddlePaddle预测库的安装路径,WITH_NCCL根据实际情况进行修改):

    NVIDIA Jetson嵌入式硬件预测库源码编译

    NVIDIA Jetson是NVIDIA推出的嵌入式AI平台,Paddle Inference支持在 NVIDIA Jetson平台上编译预测库。具体步骤如下:

    1. 准备环境

    开启硬件性能模式

    如果硬件为Nano,增加swap空间

    1. #增加DDR可用空间,Xavier默认内存为16G,所以内存足够,如想在Nano上尝试,请执行如下操作。
    2. sudo fallocate -l 5G /var/swapfile
    3. sudo chmod 600 /var/swapfile
    4. sudo mkswap /var/swapfile
    5. sudo swapon /var/swapfile
    6. sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'
    1. 编译Paddle Inference预测库
    1. 样例测试

    请参照官网样例:

    FAQ

    1. 报错:

    则增加系统同一时间最多可开启的文件数至2048

    1. ulimit -n 2048
    1. 编译卡住
    1. 使用TensorRT报错IPluginFactory或IGpuAllocator缺少虚析构函数

    下载安装TensorRT后,在NvInfer.h文件中为class IPluginFactory和class IGpuAllocator分别添加虚析构函数:

    1. virtual ~IPluginFactory() {};
    2. virtual ~IGpuAllocator() {};

    成功编译后,使用C++预测库所需的依赖(包括:(1)编译出的PaddlePaddle预测库和头文件;(2)第三方链接库和头文件;(3)版本信息与编译选项信息) 均会存放于PADDLE_ROOT目录中。目录结构如下:

    version.txt 中记录了该预测库的版本信息,包括Git Commit ID、使用OpenBlas或MKL数学库、CUDA/CUDNN版本号,如: