鲲鹏aarch64架构服务器编译安装PaddlePaddle2.3.2

目录

目的

环境准备

安装步骤

安装CMAKE

安装Patchelf

安装gcc8

编译Patchelf

安装Python依赖库

处理Paddle包内文件

编译

安装whl包

Error


目的

因未有支持aarch64架构的paddlepaddle的第三方包,且服务器环境难以链接github进行编译依赖包的下载,本文档的目的在于重新编译Paddle包。

环境准备

  • 操作系统:Centos7

  • Python版本:3.7.2

  • 系统架构:aarch64

  • gcc版本:8.3.1

安装步骤

推荐提前安装,避免后续编译过程中出现错误

$ yum install autoconf automake openssl-devel which -y

安装CMAKE

Paddle 依赖 cmake 进行编译构建,需要 cmake 版本>=3.15,如果操作系统提供的源包括了合适版本的 cmake,直接安装即可,否则需要源码安装。网络不好的可以提前下载包。

$ wget https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8.tar.gz
$ tar -xzf cmake-3.16.8.tar.gz && cd cmake-3.16.8
$ ./bootstrap && make && sudo make install

安装Patchelf

Paddle 内部使用 patchelf 来修改动态库的 rpath,如果操作系统提供的源包括了 patchelf,直接安装即可,否则需要源码安装。因为版本更新,github源上已无aarch64的版本,直接下载最新master包进行编译。

安装gcc8

需要注意的是,patchelf的编译需要支持C++17,而系统自带的gcc版本为4.8.5,在编译之前需要提前更换好系统的gcc、g++、c++、cc版本。但gcc的版本不宜过高(例如版本gcc11),否则会出现高版本无法编译低版本C++代码的问题。

安装scl工具管理gcc版本

$ yum install -y centos-release-scl scl-utils

查看scl支持的安装版本

$ yum list all --enablerepo='centos-sclo-rh' | grep gcc

安装某个版本的gcc

yum install devtoolset-8-gcc

激活版本环境

$ scl enable devtoolset-8 bash

更换系统的默认gcc源

此操作为了防止之后进行Cmake的时候报错gcc版本冲突错误

查找系统中的gcc文件,并逐个目录检查相关版本 gcc --version,找到低版本目录,并替换低版本的执行文件路径、建立新版本的软连接

$ find / -name gcc #
/opt/rh/devtoolset-7/root/usr/libexec/gcc
/opt/rh/devtoolset-7/root/usr/lib/gcc
/opt/rh/devtoolset-7/root/usr/bin/gcc  #7.3.1-5

/usr/libexec/gcc
/usr/lib/gcc
/usr/bin/gcc #4.8.5.net

更换版本,举例子为更换gcc版本,同理,还需要处理c++、g++、cc的

$ mv /usr/bin/gcc /usr/bin/gcc4.8.5
$ ln -s /opt/rh/devtoolset-8/root/usr/bin/gcc /usr/bin/gcc

编译Patchelf

$ ./bootstrap.sh
$ ./configure
$ make
$ make check
$ make install

安装Python依赖库

依赖库文件的路径在Paddle2.3/python文件夹下requirments.txt,建议提前安装,很多教程都没写,除此之外,检查依赖库是否含有protobuf、numpy、wheel包,没有应该提前安装。

$ pip3 install -r requirments.txt

网络不佳的推荐国内镜像:https://mirror.baidu.com/pypi/simple/

处理Paddle包内文件

  1. 【网络好的可忽略】因为服务器无法链接github,导致编译失败,所以需要预先把所有需要链接github网站的更换成看国内的github镜像源,例如CMakeListt.txt里的GIT_URL为https://github.com,可编写python代码遍历所有的包进行查找,主要修改.cmake文件和.h文件。在替换过程中大家也需要注意一下文件的编码问题,否则会替换不成功。国内可用的镜像源会进行更新,这里不做推荐,大家百度即可。如果遇到在镜像源里没有的包,也可以单独查找国内代码网站链接进行更换。
  2. 查找所有含有-Werror的文件,进行禁用,注释掉即可。

编译

$ mkdir build && cd build
$ ulimit -n 4096
$ cmake .. -DPY_VERSION=3 -DPYTHON_EXECUTABLE=`which python3` -DWITH_ARM=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF -DCMAKE_CXX_FLAGS="-Wno-error -w"
$ make TARGET=ARMV8 -j$(nproc)

编译成功后在paddle/build/python/dist目录下找到生成.whl包。

安装whl包

$ pip install -U(whl 包的名字)`或`pip3 install -U(whl 包的名字)

Error

Q1:执行pip install报错

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv]

A1:pip安装命令中使用--force-reinstall参数:

$ pip3 install XXX --force-reinstall

Q2:编译过程中出现:

/usr/bin/c++

 is not a full path to an existing compiler tool.

/usr/bin/cc

 is not a full path to an existing compiler tool.

A2:版本冲突错误,参考上面gcc版本冲突解决办法

Q3:安装依赖包过程中出现

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-taoxz02y/grpcio/

A3:需要升级pip3,再重新执行安装命令

$ pip3 install --upgrade pip
$ pip3 install --upgrade setuptools

Q4: 使用过程中出现CXXABI错误 or 遇到libstdc++.so.6的版本不够的问题

/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found

A4:gcc版本不匹配,参考上面gcc版本冲突解决办法

Q5:

configure: error: *** A compiler with support for C++17 language features is required

A5:gcc版本不匹配,参考上面gcc版本冲突解决办法

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值