Skip to content

946166920/hiai_ddk

Repository files navigation

HUAWEI HiAI Foundation介绍

华为终端有强大的AI能力,为了让开发者能够更简单快捷的应用华为终端的AI能力,HUAWEI HiAI基于“芯、端、云”三层开放架构,构筑全面开放的智慧生态,让开发者能够快速地利用华为强大的AI处理能力,为用户提供更好的智慧应用体验。

HUAWEI HiAI Foundation作为芯片使能的基础平台,提供了300+算子的支持,具备业界最佳的模型兼容性,为众多业务场景提供了更高性能更低功耗的计算环境。

img

HUAWEI HiAI Foundation衔接智慧业务和计算芯片,提供轻量化模型计算能力,支持华为MindSpore、TensorFlow、Caffe、Paddle、ONNX、AndroidNN等框架的对接,支持芯片内多计算单元的异构计算,为开发者提供模型量化,模型转换,性能调优,维测等高效工具链。

HiAI DDK开发套件将其AI推理能力封装在动态库文件里,通过此方式集成在用户app中,因此HiAI DDK支持跨平台交叉编译,目前支持情况如下所示:

硬件平台 状态
Kirin 平台 Kirin 820、Kirin 985 、Kirin 990 、Kirin 990 5G 、Kirin 990E 、Kirin 9000 、Kirin 9000E ✔️
操作系统 状态
鸿蒙3.0 ✔️

工程结构介绍

文件/目录名 说明
api 开放接口目录
build 编译架构源码、脚本和配置文件目录
cmake 编译过程中用到的cmake文件
doc 文档目录
inc 头文件接口目录
src 源码目录
tests 测试源码目录
CMakeLists.txt 顶层CMakeLists文件
LICENSE 许可证文件
README.md readme文件
RELEASE.md 发布历史记录文件
Third_Party_Open_Source_Software_Notice.doc 开源三方使用声明文件
build.py 编译脚本

编译

编译环境配置

编译所需的第三方源码和工具的推荐版本如下:

编译源码和工具 推荐版本 下载链接
libboundscheck 1.1.11 https://github.com/openeuler-mirror/libboundscheck/archive/refs/tags/v1.1.11.zip
protobuf 3.13.0 https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.13.0.zip
cutils -- https://mirrors.aliyun.com/android.googlesource.com/system/core/libcutils/include/cutils/native_handle.h
googletest 1.8.1 https://codeload.github.com/google/googletest/tar.gz/release-1.8.1
mockcpp 2.7 https://github.com/sinojelly/mockcpp/archive/refs/tags/v2.7.zip
cmake 3.20.5 https://cmake.org/files/v3.20/cmake-3.20.5-linux-x86_64.tar.gz
android-ndk r23b https://dl.google.com/android/repository/android-ndk-r23b-linux.zip

只支持在Linux平台Ubuntu 16/18操作系统下进行编译,暂不支持在windows下编译。

HiAI DDK编译需要依赖第三方库,编译过程中脚本会自动下载所需的源码和工具,请确保可连接网络,下载耗时因网络环境而异。

下载过程中会在工程根目录下的third_party目录中存放下载的第三方源码,其中libboundscheck源码使用build/core/cmake/external/c_sec/CMakeLists.txt编译生成libhuawei_c_sec_shared.so

本项目编译依赖NDK和CMake编译工具(暂不支持r19c以下的NDK版本。):

1、本地没有安装NDK和CMake的情况下:

​ 如果本地是一个全新的环境,我们的编译脚本会自动去下载依赖的NDK和CMake编译工具,并存放在工程根目录下新建的buildtools目录下,开发者可以直接跳到编译执行小节,执行编译命令即可,默认只64位架构的so,如果需要修改目标so架构,请参考下面的”配置ABI“小节。

2、本地已经安装NDK或者CMake的情况下:

如果本地已经下载安装好编译工具,且在系统变量中有命令可用,则无需配置,脚本中会自动检测并使用;

如果想使用工具的其他版本,可以通过修改配置文件build/config/build.conf,指定编译工具路径,编译脚本优先使用配置文件中指定路径的编译工具;

如果当前环境中只有部分编译工具,可以只填写当前已有的编译工具路径,其余未配置的编译工具,我们在build.py脚本中会自动检测并下载。

​ 具体配置项如下所示(注意:配置文件中"="前的变量名请勿修改,编译脚本中会引用到):

  1. 配置NDK路径(下载文件较大,建议使用本地配置)例如:

    # 使用自定义本地配置
    ANDROID_NDK_PATH=/your/project/path/project_name/buildtools/android-ndk-r23b
    
  2. 配置cmake路径,例如:

    # 使用自定义本地配置
    CMAKE_TOOLCHAIN_FILE=/your/project/path/project_name/buildtools/cmake-3.20.5
    
  3. 配置ABI,此选项用于区分最终的目标文件是基于32bit架构还是64bit架构,此字段只支持三种选项,当前默认配置为both,如下所示

    # Architecture support for [armeabi-v7a/arm64-v8a/both], 'both' means compile both armeabi-v7a and arm64-v8a
    ABI=both
    

编译执行

在编译过程中,会使用autoreconf命令编译protobuf源码生成protoc文件,请确保本地环境上已经安装有autoreconf命令。

HiAI DDK基于NDK + CMake的命令行构建方式,在确认编译环境配置完成的前提下,安装好python3,在工程根目录下运行build.py即可执行编译。

详细命令如下:

python3 build.py        # 编译打包so和编译运行测试代码默认均执行
python3 build.py --ddk  # 只编译和打包so,不编译运行测试代码
python3 build.py --test # 只编译运行测试代码,不编译和打包so

编译输出

编译成功之后会在工程根目录下生成hwhiai-ddk-master.zip压缩包,在压缩包里的ddk/ai_ddk_lib下存放打包的头文件和so。

结构如下所示:

image-20211228160620651

编译打包so成功之后会有如下输出:

image-20211228160620651

编译运行测试代码成功之后会有如下输出:

image-20211228160620651

APP集成

APP开发过程参考HUAWEI HiAI Foundation 开发指南,当前开源部分仅支持NPU推理。

版本说明

版本说明请参阅RELEASE

许可证

Apache License 2.0

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published