---
title: 源码编译构建
description: "从PaddlePaddle源码树中构建Paddle Inference，构建完成后配置面向GPU的推理路径，最后完成编译。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengai/ecosystemEnable/paddleInference/kunpengpaddleinference_16_0005.html
sourcePath: /source/zh/kunpengai/ecosystemEnable/paddleInference/kunpengpaddleinference_16_0005.html
indexId: 621af6b42dc3c97fcae28055c826dbadc6c0930a3634f3b47c9fc830e6b7b25688
---
# 源码编译构建

从PaddlePaddle源码树中构建Paddle Inference，构建完成后配置面向GPU的推理路径，最后完成编译。

1. 获取PaddlePaddle 3.3.1源码。
  Paddle Inference从PaddlePaddle源码树中构建。 1 2 3 git clone --branch v3.3.1 --depth 1 https://github.com/PaddlePaddle/Paddle.git cd Paddle git submodule sync --recursive

  当不启用OpenVINO时，可跳过third_party/openvino子模块，避免下载未使用依赖。

  1 2 3 git config -f .gitmodules --get-regexp path | awk '{print $2}' \ | grep -v '^third_party/openvino$' \ | xargs -r git submodule update --init --recursive --

2. 配置CMake。
  以下配置面向GPU的推理路径，并按单一Ampere架构生成CUDA代码。

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 mkdir -p build-inference-cuda13 cd build-inference-cuda13 cmake .. \ -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DWITH_GPU=ON \ -DWITH_ARM=ON \ -DWITH_TESTING=OFF \ -DWITH_DISTRIBUTE=OFF \ -DWITH_NCCL=OFF \ -DWITH_OPENVINO=OFF \ -DWITH_CUDNN=ON \ -DWITH_CUDNN_FRONTEND=OFF \ -DWITH_PYTHON=OFF \ -DON_INFER=ON \ -DWITH_INFERENCE_API_TEST=OFF \ -DWITH_TP_CACHE=ON \ -DTHIRD_PARTY_CACHE_PATH="$(pwd)/third_party_cache" \ -DCUDA_ARCH_NAME=Ampere \ -DCMAKE_CUDA_FLAGS='-DEIGEN_DONT_VECTORIZE -UPADDLE_WITH_SLEEF'

**表1 关键参数说明**

| 参数 | 说明 |
| --- | --- |
| \-DPY\_VERSION=3.11 | 生成Python 3.11 ABI wheel。 |
| \-DWITH\_GPU=ON | 构建GPU版本PaddlePaddle。 |
| \-DWITH\_ARM=ON | 启用ARM架构进行构建。 |
| \-DWITH\_TESTING=OFF | 不构建测试目标，降低构建时间和依赖规模。 |
| \-DWITH\_DISTRIBUTE=OFF | 不启用分布式训练能力。 |
| \-DWITH\_NCCL=OFF | 不启用NCCL，多卡通信不纳入最小验证路径。 |
| \-DWITH\_OPENVINO=OFF | 不构建OpenVINO后端。 |
| \-DCUDA\_ARCH\_NAME=Ampere | 面向A100/Ampere架构生成CUDA代码。 |
| \-DCMAKE\_CUDA\_FLAGS=... | 作用于CUDA编译单元，用于规避AArch64下NVCC解析ARM NEON头文件问题。 |


3. 执行编译。
```
export MAX_JOBS=8 
export CMAKE_BUILD_PARALLEL_LEVEL=8 
ninja -j8
```

建议使用8并发，兼顾构建速度和系统负载。


构建完成后，产物目录位于“build-inference-cuda13/paddle_inference_install_dir/”和“build-inference-cuda13/paddle_inference_c_install_dir/”。

  - C++ API产物示例：
    1 2 3 4 paddle_inference_install_dir/paddle/include/paddle_inference_api.h paddle_inference_install_dir/paddle/lib/libpaddle_inference.so paddle_inference_install_dir/paddle/lib/libpaddle_inference.a paddle_inference_install_dir/version.txt

  - C API产物示例：
    1 2 3 paddle_inference_c_install_dir/paddle/include/pd_inference_api.h paddle_inference_c_install_dir/paddle/lib/libpaddle_inference_c.so paddle_inference_c_install_dir/paddle/lib/libpaddle_inference_c.a
