安装与编译 Linux 预测库
从源码编译
选项 | 值 | 说明 |
---|---|---|
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拉取最新代码并安装nccl
note: 单卡机器上不会用到nccl但仍存在依赖, 后续会考虑将此依赖去除。
Server端预测库源码编译
NVIDIA Jetson嵌入式硬件预测库源码编译
NVIDIA Jetson是NVIDIA推出的嵌入式AI平台,Paddle Inference支持在 NVIDIA Jetson平台上编译预测库。具体步骤如下:
- 准备环境
开启硬件性能模式
- sudo nvpmodel -m 0 && sudo jetson_clocks
如果硬件为Nano,增加swap空间
- 编译Paddle Inference预测库
- 样例测试
请参照官网样例:
- 报错:
- ERROR: ../aarch64-linux-gpn/crtn.o: Too many open files.
则增加系统同一时间最多可开启的文件数至2048
- 编译卡住
- 使用TensorRT报错IPluginFactory或IGpuAllocator缺少虚析构函数
下载安装TensorRT后,在NvInfer.h文件中为class IPluginFactory和class IGpuAllocator分别添加虚析构函数:
- virtual ~IPluginFactory() {};
- virtual ~IGpuAllocator() {};
成功编译后,使用C++预测库所需的依赖(包括:(1)编译出的PaddlePaddle预测库和头文件;(2)第三方链接库和头文件;(3)版本信息与编译选项信息) 均会存放于PADDLE_ROOT目录中。目录结构如下:
- PaddleRoot/
- ├── CMakeCache.txt
- ├── paddle
- │ ├── include
- │ │ ├── paddle_analysis_config.h
- │ │ ├── paddle_api.h
- │ │ ├── paddle_inference_api.h
- │ │ ├── paddle_mkldnn_quantizer_config.h
- │ │ └── paddle_pass_builder.h
- │ └── lib
- │ ├── libpaddle_fluid.a
- │ └── libpaddle_fluid.so
- ├── third_party
- │ ├── boost
- │ │ └── boost
- │ ├── eigen3
- │ │ ├── Eigen
- │ │ └── unsupported
- │ └── install
- │ ├── gflags
- │ ├── glog
- │ ├── mkldnn
- │ ├── mklml
- │ ├── protobuf
- │ ├── xxhash
- │ └── zlib
version.txt 中记录了该预测库的版本信息,包括Git Commit ID、使用OpenBlas或MKL数学库、CUDA/CUDNN版本号,如: