[教程]Arm+飞腾DSP异构环境下部署Mindspore-Lite应用(二)—-Minsspore-Lite源码构建

构建环境
Host:x86
操作系统:Linux ubuntu 5.4.0-150-generic #167~18.04.1-Ubuntu

构建步骤
构建分两步走:首先通过X86端构建得到mindspore-lite的模型转换工具:converter_lite,然后再针对异构环境的交叉构建,获取用于部署在异构端的Minspore Lite运行库。

【1】X86下构建
目的:通过源码构建converter_lite

Source branch:r2.7.1

构建示例脚本,build.MinSpore.Lite.X86_64.sh:

#!/bin/bash

# Define the directory where MindSpore repository will be cloned
MINDSPORE_LITE_DIR="mindspore-lite"
#MINDSPORE_LITE_PACKAGE_r2_7_2="mindspore-lite-2.7.2-linux-x64.tar.gz"

# Check if MindSpore directory exists
if [ -d "$MINDSPORE_LITE_DIR" ]; then
    echo "MindSpore repository already exists. Skipping cloning."
    cd "$MINDSPORE_LITE_DIR"
else
    # Clone MindSpore repository if it doesn't exist
    git clone -b r2.7.2 https://gitee.com/mindspore/mindspore-lite.git "$MINDSPORE_LITE_DIR"
    cd "$MINDSPORE_LITE_DIR"
    echo "NO Source!!"
    exit
fi

#enable downloading thirdparty lib from gitee
export MSLITE_ENABLE_CONVERTER=on
export MSLIBS_SERVER="tools.mindspore.cn"
export MSLITE_ENABLE_TOOLS=on

bash build.sh -I x86_64 -j12 

经过测试,上述脚本编译会报错。这个问题参考 [Bug]: x86_64版本开启编译converter工具时编译不通过 · Issue #ID1NFW · MindSpore/mindspore-lite - Gitee.com

所以使用converter_lite可以直接从官方下载(选择r2.7.1 x86版本): 下载MindSpore Lite | MindSpore Lite master 文档 | MindSpore

【2】arm+飞腾dsp异构环境在主机(x86)下交叉构建:
CPU:arm32
DSP:ft04
Source branch:master
组件:dsp_sdk(dsp hthread 运行时库)

构建示例脚本,build.MinSpore.Lite.ft04.sh:

#!/bin/bash

check_and_install_arm_toolchain() {
 if ! dpkg -l | grep -q g++-arm-linux-gnueabi; then
     sudo apt-get update
     sudo apt-get install -y --no-install-recommends g++-arm-linux-gnueabi
 else
     echo "g++-arm-linux-gnueabi already installed"
 fi

 if ! dpkg -l | grep -q gcc-arm-linux-gnueabi; then
     sudo apt-get update
     sudo apt-get install -y --no-install-recommends gcc-arm-linux-gnueabi
 else
     echo "gcc-arm-linux-gnueabi already installed"
 fi

 if ! dpkg -l | grep -q g++-arm-linux-gnueabihf; then
     sudo apt-get update
     sudo apt-get install -y --no-install-recommends g++-arm-linux-gnueabihf
 else
     echo "g++-arm-linux-gnueabihf already installed"
 fi

 if ! dpkg -l | grep -q gcc-arm-linux-gnueabihf; then
     sudo apt-get update
     sudo apt-get install -y --no-install-recommends gcc-arm-linux-gnueabihf
 else
     echo "gcc-arm-linux-gnueabihf already installed"
 fi

}


# 自动检测并安装交叉编译工具链
check_and_install_arm_toolchain

#Mindspore lite仓库名
MINDSPORE_LITE_DIR="mindspore-lite"


# 源码仓库检测
if [ -d "$MINDSPORE_LITE_DIR" ]; then
 echo "MindSpore repository already exists. Skipping cloning."
 cd "$MINDSPORE_LITE_DIR"
else
 # Clone MindSpore repository if it doesn't exist
 git clone -b master	https://gitee.com/mindspore/mindspore-lite.git "$MINDSPORE_LITE_DIR"
 cd "$MINDSPORE_LITE_DIR"
fi

export MSLITE_ENABLE_TESTCASES=ON
export MSLITE_REGISTRY_DEVICE=ft04
export MSLIBS_SERVER="tools.mindspore.cn"
export DSP_SDK_PATH=/home/cgj/MindSpore/Mindspore-lite.from.1024/dsp_sdk


bash build.sh -I  arm32 -j4

构建结果:

参考文档:[端侧编译 | MindSpore Lite 2.7.0 文档 | MindSpore] https://www.mindspore.cn/lite/docs/zh-CN/r2.7.0/build/build.html

当前最新已经发布的版本是2.7.1, 当前正在开发中的版本是2.8;

2.7.2版本是基于2.7.1版本发布的