安装与编译 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,则编译会报错。
cd nccl
make -j4
make install
Server端预测库源码编译
下面的代码片段配制编译选项并进行编译(需要将PADDLE_ROOT替换为PaddlePaddle预测库的安装路径,WITH_NCCL根据实际情况进行修改):
NVIDIA Jetson嵌入式硬件预测库源码编译
NVIDIA Jetson是NVIDIA推出的嵌入式AI平台,Paddle Inference支持在 NVIDIA Jetson平台上编译预测库。具体步骤如下:
- 准备环境
开启硬件性能模式
如果硬件为Nano,增加swap空间
#增加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'
- 编译Paddle Inference预测库
- 样例测试
请参照官网样例:
FAQ
- 报错:
则增加系统同一时间最多可开启的文件数至2048
ulimit -n 2048
- 编译卡住
- 使用TensorRT报错IPluginFactory或IGpuAllocator缺少虚析构函数
下载安装TensorRT后,在NvInfer.h文件中为class IPluginFactory和class IGpuAllocator分别添加虚析构函数:
virtual ~IPluginFactory() {};
virtual ~IGpuAllocator() {};
成功编译后,使用C++预测库所需的依赖(包括:(1)编译出的PaddlePaddle预测库和头文件;(2)第三方链接库和头文件;(3)版本信息与编译选项信息) 均会存放于PADDLE_ROOT目录中。目录结构如下:
version.txt 中记录了该预测库的版本信息,包括Git Commit ID、使用OpenBlas或MKL数学库、CUDA/CUDNN版本号,如: