源码构建

1. 环境准备

在源码编译前,请先完成基础环境搭建。具体操作请参见快速安装

2. 环境验证

安装完CANN包后,需验证环境是否正常。

# 查看CANN Toolkit的version字段提供的版本信息(默认路径安装),<arch>表示CPU架构(aarch64或x86_64)。WebIDE场景下,请将/usr/local替换为/home/developer。
cat /usr/local/Ascend/cann/<arch>-linux/ascend_toolkit_install.info

3. 环境变量配置

根据实际场景,选择合适的命令:

  # 默认路径安装,以root用户为例(非root用户,将/usr/local替换为${HOME}) 
  source /usr/local/Ascend/cann/set_env.sh
  # 指定路径安装
  source ${install_path}/cann/set_env.sh

4. 源码编译

4.1 下载源码

开发者可通过如下命令下载本仓源码:

# 下载项目源码,以master分支为例 
git clone https://gitcode.com/cann/metadef.git

4.2 安装依赖

安装依赖

以下所列为源码编译用到的依赖,请注意版本要求(如果遇到安装问题,请尝试切换镜像源)。

注意

如使用镜像方式进行项目体验,所有依赖已包含在init_env.sh中,可跳过此安装依赖步骤。

  • GCC >= 7.3.x

  • Python3 >= 3.9.x

  • CMake >= 3.16.0 (建议使用3.20.0版本)

  • ccache/asan/patch

  • lcov(可选,用于本地验证覆盖率统计)

  • graph-easy(可选)

    # Ubuntu/Debian操作系统安装命令示例如下,其他操作系统请自行安装
    # asan以gcc 7.5.0版本为例,其他版本请安装对应版本asan
    sudo apt-get install cmake ccache lcov libasan4 libgraph-easy-perl patch
    

检查编译环境

安装完成后,建议执行环境检查脚本,确认当前环境是否满足编译要求。

bash scripts/check_env.sh

检查结果说明如下:

状态 含义 处理建议
[PASS] 检查通过 无需处理
[WARNING] 非关键依赖缺失或版本存在偏差 建议修复,不影响核心编译
[ERROR] 关键依赖缺失或版本不兼容 必须修复,否则无法编译

注意

环境检查脚本中所有检查项和版本约束严格来源于 docs/build.md,如 build.md 更新,请同步修改脚本

4.3 编译

注意

若您的编译环境无法访问网络,由于无法通过git指令下载代码,须在联网环境中下载源码及三方库依赖后,手动上传至目标环境,参见离线编译指导。 若您的编译环境可以访问网络,通过git指令下载代码后,编译过程中将自动下载开源第三方软件。

若您的编译环境可以访问网络,或已经完成离线编译指导metadef提供一键式编译能力,可通过如下命令进行编译:

bash build.sh

更多编译参数可以通过bash build.sh -h查看,编译成功后,会在build_out目录下生成cann-metadef_<version>_linux.<arch>.run软件包。

  • <version>表示版本号。
  • <arch>表示操作系统架构,取值包括x86_64与aarch64。

4.4 本地验证(UT)

注意

若您的编译环境无法访问网络,请确保已经完成了4.3 编译章节中的离线编译指导

执行本地验证前,请确保已完成安装依赖,并设置环境变量

metadef仓提供一键式编译执行供开发者测试,详细配置可通过bash tests/run_test.sh -h查看。

bash tests/run_test.sh -u

4.5 安装与卸载

  • 安装

    编译完成后,生成metadef软件包放在./build_out目录下,可通过如下命令安装编译生成的metadef软件包。

    ./cann-metadef_<version>_linux.<arch>.run --full --install-path=${install_path}
    

    使用root用户、默认路径安装场景:${install_path}/usr/local/Ascend;使用非root用户、默认路径安装场景:${install_path}$HOME/Ascend

  • 卸载

    若您想卸载安装的自定义metadef软件包,可执行如下命令:

    ./cann-metadef_<version>_linux.<arch>.run --uninstall --install-path=${install_path}