From 613a09a3ec56f6082f1c97a225d03daee0ce5a48 Mon Sep 17 00:00:00 2001 From: shiming <545907376@qq.com> Date: Sat, 24 Jan 2026 20:22:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0MIPS=E6=9E=B6=E6=9E=84?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 完善龙芯架构PaddlePaddle源码编译指南 --- docs/install/compile/mips-compile.md | 236 ++++++++++++++------------- 1 file changed, 123 insertions(+), 113 deletions(-) diff --git a/docs/install/compile/mips-compile.md b/docs/install/compile/mips-compile.md index 47736d5a23d..f90e408a9c3 100644 --- a/docs/install/compile/mips-compile.md +++ b/docs/install/compile/mips-compile.md @@ -1,171 +1,181 @@ -# **龙芯下从源码编译** +# 龙芯架构 PaddlePaddle 源码编译指南 -## 环境准备 +## 概述 -* **处理器:Loongson-3A R4 (Loongson-3A4000)** -* **操作系统:Loongnix release 1.0** -* **Python 版本 3.8/3.9/3.10 (64 bit)** -* **pip 或 pip3 版本 20.2.2+ (64 bit)** +本文介绍如何在龙芯(Loongarch)架构下从源码编译安装 PaddlePaddle。以 Loongson-3C6000 处理器为例进行说明。 -本文以 Loongson-3A4000 为例,介绍 Paddle 在 MIPS 架构下的源码编译。 +## 环境准备 -## 安装步骤 +### 硬件与系统要求 -目前在 MIPS 龙芯处理器加龙芯国产化操作系统上安装 Paddle,只支持源码编译的方式,接下来详细介绍各个步骤。 +| 项目 | 版本/型号 | +|------|-----------| +| 处理器 | Loongson-3C6000 | +| 操作系统 | Loongnix Server release 23.1 | +| Python | 3.11.6 (64 bit) | +| pip/pip3 | 23.3.1 (64 bit) | - -### **源码编译** +### 预装环境说明 -1. 龙芯操作系统`Loongnix release 1.0`默认安装的 gcc 版本是 4.9,但 yum 源提供了 gcc-7 的工具链,在此处安装 gcc-7。可以参考龙芯龙芯开源社区[文章](http://www.loongnix.org/index.php/Gcc7.3.0) +龙芯操作系统 Loongnix Server release 23.1 默认安装了以下工具: - ``` - sudo yum install devtoolset-7-gcc.mips64el devtoolset-7-gcc-c++.mips64el devtoolset-7.mips64el - ``` +- **GCC**: 12.3.0 +- **CMake**: 3.26.3 +- **Python**: 3.11.6 +- **pip**: 23.3.1 - 设置环境变量使得 gcc-7 生效 +## 安装步骤 - ``` - source /opt/rh/devtoolset-7/enable - ``` +> **注意**:目前在龙芯处理器和龙芯国产化操作系统上安装 Paddle,仅支持源码编译方式。 -2. 龙芯系统自带的 python 都是基于 gcc4.9,在第 1 步时选择使用了 gcc-7.3,此处需要源码安装 Python,此处以 Python3.8 为例。 +### 1. 安装依赖包 - ``` - sudo yum install libffi-devel.mips64el openssl-devel.mips64el libsqlite3x-devel.mips64el sqlite-devel.mips64el lbzip2-utils.mips64el lzma.mips64el tk.mips64el uuid.mips64el gdbm-devel.mips64el gdbm.mips64el openjpeg-devel.mips64el zlib-devel.mips64el libjpeg-turbo-devel.mips64el openjpeg-devel.mips64el - ``` +安装系统依赖库和 Python wheel: - ``` - wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz && tar xzf Python-3.8.0.tgz && cd Python-3.8.0 - ``` +```bash +yum install libffi-devel openssl-devel libsqlite3x-devel sqlite-devel \ + ghc-lzma tk uuid gdbm-devel gdbm openjpeg2-devel zlib-devel \ + libjpeg-turbo-devel openjpeg2 patch patchelf - ``` - ./configure –prefix $HOME/python38–enable−shared - ``` +pip3 install wheel +``` - ``` - make -j - ``` +### 2. 下载源码 - ``` - make install - ``` +克隆 PaddlePaddle 源码仓库: - 设置环境变量,使得 python38 生效 +```bash +git clone https://github.com/PaddlePaddle/Paddle.git +cd Paddle +``` - ``` - export PATH=$HOME/python38/bin:$PATH - export LD_LIBRARY_PATH=$HOME/python38/lib:$LD_LIBRARY_PATH - ``` +### 3. 切换到发布分支 -3. Paddle 依赖 cmake 进行编译构建,需要 cmake 版本>=3.15,龙芯操作系统源提供 cmake 的版本是 3.9,且尝试源码编译 cmake 失败,此处临时的处理方式是修改 Paddle 主目录的`CMakeLists.txt`, `cmake_minimum_required(VERSION 3.15)` 修改为 `cmake_minimum_required(VERSION 3.9)`。等到龙芯系统支持 cmake >= 3.15 后则不需要其它操作。 +切换到 release/3.3 分支进行编译: +```bash +git checkout release/3.3 +``` -4. Paddle 内部使用 patchelf 来修改动态库的 rpath,操作系统提供的源包括了 patchelf,直接安装即可,后续会考虑在 MIPS 上移出该依赖。 +### 4. 安装 Python 依赖库 - ``` - sudo yum install patchelf.mips64el - ``` +根据 `requirements.txt` 文件安装所需的 Python 依赖库: -5. 将 Paddle 的源代码克隆到当下目录下的 Paddle 文件夹中,并进入 Paddle 目录 +```bash +pip3 install -r requirements.txt +``` - ``` - git clone https://github.com/PaddlePaddle/Paddle.git - ``` +### 5. 创建编译目录 - ``` - cd Paddle - ``` +```bash +mkdir build && cd build +``` -6. 根据[requirements.txt](https://github.com/PaddlePaddle/Paddle/blob/develop/python/requirements.txt)安装 Python 依赖库。 +### 6. 调整系统限制 +链接过程中会打开大量文件,需要调整系统限制以避免编译错误: -7. 切换到`develop`分支下进行编译: +```bash +ulimit -n 4096 +``` - ``` - git checkout develop - ``` +### 7. 执行 CMake 配置 -6. 并且请创建并进入一个叫 build 的目录下: +```bash +cmake .. \ + -DWITH_LOONGARCH=ON \ + -DWITH_TESTING=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DON_INFER=ON \ + -DWITH_XBYAK=OFF \ + -DWITH_MKL=OFF +``` - ``` - mkdir build && cd build - ``` +**配置参数说明**: -7. 链接过程中打开文件数较多,可能超过系统默认限制导致编译出错,设置进程允许打开的最大文件数: +- `WITH_LOONGARCH=ON`: 启用龙芯架构支持 +- `WITH_TESTING=OFF`: 关闭测试 +- `CMAKE_BUILD_TYPE=Release`: 发布版本编译 +- `ON_INFER=ON`: 启用推理模式 +- `WITH_XBYAK=OFF`: 关闭 XBYAK +- `WITH_MKL=OFF`: 关闭 MKL - ``` - ulimit -n 4096 - ``` +### 8. 编译 -8. 执行 cmake: +使用所有可用 CPU 核心进行并行编译: - >具体编译选项含义请参见[编译选项表](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/install/Tables.html#Compile) +```bash +make -j$(nproc) +``` - For Python3: - ``` - cmake .. -DPY_VERSION=3 -DPYTHON_EXECUTABLE=`which python3` -DWITH_MIPS=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF -DWITH_MKL=OFF - ``` +> **提示**:编译过程可能需要较长时间,请耐心等待。 -9. 编译。 +### 9. 安装编译产物 - ``` - make -j$(nproc) - ``` +编译成功后,进入 `Paddle/build/python/dist` 目录,找到生成的 `.whl` 安装包。 -10. 编译成功后进入`Paddle/build/python/dist`目录下找到生成的`.whl`包。 +在当前机器或目标机器上安装: -11. 在当前机器或目标机器安装编译好的`.whl`包: +```bash +python3 -m pip install -U paddlepaddle-*.whl +``` - ``` - python -m pip install -U(whl 包的名字)`或`python3 -m pip install -U(whl 包的名字) - ``` +或者: -恭喜,至此您已完成 PaddlePaddle 在龙芯环境下的编译安装。 +```bash +python -m pip install -U paddlepaddle-*.whl +``` +## 验证安装 -## **验证安装** -安装完成后您可以使用 `python` 或 `python3` 进入 python 解释器,输入`import paddle` ,再输入 - `paddle.utils.run_check()` +安装完成后,验证 PaddlePaddle 是否安装成功: -如果出现`PaddlePaddle is installed successfully!`,说明您已成功安装。 +```bash +python3 << EOF +import paddle +paddle.utils.run_check() +EOF +``` -在 mobilenetv1 和 resnet50 模型上测试 +或者进入 Python 交互式环境: -``` -wget -O profile.tar https://paddle-cetc15.bj.bcebos.com/profile.tar?authorization=bce-auth-v1/4409a3f3dd76482ab77af112631f01e4/2020-10-09T10:11:53Z/-1/host/786789f3445f498c6a1fd4d9cd3897ac7233700df0c6ae2fd78079eba89bf3fb -``` -``` -tar xf profile.tar && cd profile -``` -``` -python resnet.py --model_file ResNet50_inference/model --params_file ResNet50_inference/params -# 正确输出应为:[0.0002414 0.00022418 0.00053661 0.00028639 0.00072682 0.000213 -# 0.00638718 0.00128127 0.00013535 0.0007676 ] -``` -``` -python mobilenetv1.py --model_file mobilenetv1/model --params_file mobilenetv1/params -# 正确输出应为:[0.00123949 0.00100392 0.00109539 0.00112206 0.00101901 0.00088412 -# 0.00121536 0.00107679 0.00106071 0.00099605] -``` -``` -python ernie.py --model_dir ernieL3H128_model/ -# 正确输出应为:[0.49879393 0.5012061 ] +```bash +python3 ``` -## **如何卸载** -请使用以下命令卸载 PaddlePaddle: +然后执行: +```python +import paddle +paddle.utils.run_check() ``` -python -m pip uninstall paddlepaddle + +如果输出以下信息,说明安装成功: + ``` -或 +PaddlePaddle is installed successfully! ``` -python3 -m pip uninstall paddlepaddle + +## 常见问题 + +### 编译过程中出现文件打开数限制错误 + +**解决方案**:执行 `ulimit -n 4096` 增加文件打开数限制。 + +### 依赖包安装失败 + +**解决方案**:检查网络连接,或使用国内镜像源: + +```bash +pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt ``` +## 总结 -## **备注** +恭喜!至此您已完成 PaddlePaddle 在龙芯环境下的源码编译和安装。 -已在 MIPS 架构下测试过 resnet50, mobilenetv1, ernie, ELMo 等模型,基本保证了预测使用算子的正确性,如果您在使用过程中遇到计算结果错误,编译失败等问题,请到[issue](https://github.com/PaddlePaddle/Paddle/issues)中留言,我们会及时解决。 +--- -预测文档见[doc](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/05_inference_deployment/inference/native_infer.html),使用示例见[Paddle-Inference-Demo](https://github.com/PaddlePaddle/Paddle-Inference-Demo) +**文档版本**:1.0 +**最后更新**:2024 +**适用版本**:PaddlePaddle release/3.3 From 4640feec77741926a82e256b244c4720626f3442 Mon Sep 17 00:00:00 2001 From: shiming <545907376@qq.com> Date: Sat, 24 Jan 2026 20:43:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=BA=20Loongarch-compile.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 mips-compile.md 重命名为 Loongarch-compile.md - 使文件名更准确反映龙芯架构 --- .../install/compile/{mips-compile.md => Loongarch-compile.md} | 4 ---- 1 file changed, 4 deletions(-) rename docs/install/compile/{mips-compile.md => Loongarch-compile.md} (97%) diff --git a/docs/install/compile/mips-compile.md b/docs/install/compile/Loongarch-compile.md similarity index 97% rename from docs/install/compile/mips-compile.md rename to docs/install/compile/Loongarch-compile.md index f90e408a9c3..d38cbe65bef 100644 --- a/docs/install/compile/mips-compile.md +++ b/docs/install/compile/Loongarch-compile.md @@ -175,7 +175,3 @@ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt 恭喜!至此您已完成 PaddlePaddle 在龙芯环境下的源码编译和安装。 --- - -**文档版本**:1.0 -**最后更新**:2024 -**适用版本**:PaddlePaddle release/3.3