news 2026/5/9 18:08:03

CANN/ge源码构建指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ge源码构建指南

源码构建

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

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 # 查看CANN ops的version字段提供的版本信息(默认路径安装),<opsname>表示待查询的ops子包的名称,请用户根据实际安装路径替换。WebIDE场景下,请将/usr/local替换为/home/developer。 cat /usr/local/Ascend/cann/<arch>-linux/ascend_ops_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/ge.git

4.2 安装依赖

安装依赖

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

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

  • GCC >= 7.3.x

  • Python3 >= 3.9.x

    除了CANN开发套件包需要的Python依赖外,还需要额外安装coverage,并将Python3的bin路径添加到PATH环境变量中,命令示例如下:

    pip3 install coverage # 修改下面的PYTHON3_HOME为实际的PYTHON安装目录 export PATH=$PATH:$PYTHON3_HOME/bin
  • CMake >= 3.16.0 (建议使用3.20.0版本)

  • bash >= 5.1.16

  • ccache/asan/autoconf/automake/libtool/gperf/lcov/libasan/patch/perl/graph-easy(其中graph-easy可选)

    # Ubuntu操作系统安装命令示例如下,其他操作系统依赖可能有部分差异,请自行安装 # asan以gcc 7.5.0版本为例安装的是libasan4,其他版本请安装对应版本asan sudo apt-get update sudo apt-get install cmake ccache bash lcov libasan4 autoconf automake libtool gperf libgraph-easy-perl patch perl
  • 安装Python其他依赖

    ## 进入项目源码根目录,执行安装命令 cd ge pip3 install -r requirements.txt
检查编译环境

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

bash scripts/check_env.sh

检查结果说明如下:

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

[!NOTE] 注意 环境检查脚本中所有的检查项和版本约束严格来源于 docs/build.md 和 requirements.txt,如文档和依赖更新,请同步修改脚本。

4.3 编译

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

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

bash build.sh --<pkg_type>

--<pkg_type>(可选):表示子包类型,取值包括ge_compilerge_executordflow,不同编译参数编译不同子包,不设置则同时编译三种子包。

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

  • <component>表示子包名称,取值包括ge-compiler、ge-executor与dflow-executor。
  • <version>表示版本号。
  • <arch>表示操作系统架构,取值包括x86_64与aarch64。

4.4 本地验证(UT/ST)

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

编译完成后,用户可以进行开发者测试。

  • 编译执行UT测试用例:

    #编译执行所有的UT测试用例 bash tests/run_test.sh --ut #编译执行特定的UT测试用例(推荐) bash tests/run_test.sh --ut=${TARGET}

    --ut(必选):可以指定${TARGET}编译特定对象的ut测试用例,取值可通过bash tests/run_test.sh -h查看。

  • 编译执行ST测试用例:

    #编译执行所有的ST测试用例 bash tests/run_test.sh --st #编译执行特定的ST测试用例(推荐) bash tests/run_test.sh --st=${TARGET}

    --st(必选):可以指定${TARGET}编译特定对象的st测试用例,取值可通过bash tests/run_test.sh -h查看。

  • 统计代码覆盖率:

    使用tests/run_test.sh脚本的-c参数可以在测试用例运行过程中生成代码覆盖率统计文件。

    前置条件

    • 确保lcov工具已正确安装
    • 编译运行环境上的gccgcov必须是配套版本

    使用方法

    bash tests/run_test.sh -c [其他参数]

    输出位置:生成的覆盖率文件位于代码根目录下的cov/目录中。

  • 执行指定用例:

    执行完成UT/ST后,可以通过直接执行测试可执行文件进行单独测试。

    前置条件

    • 已经执行了UT/ST对应的测试命令,并正确生成了测试可执行文件。

    使用方法

    • 示例:已经执行了bash tests/run_test.sh --ut=ge_common,并希望单独执行验证ut_libge_multiparts_utest
    # 测试UT/ST会对部分依赖so进行打桩处理,需要清除LD_LIBRARY_PATH和ASCEND_OPP_PATH环境变量,避免宿主机已安装的 CANN/Ascend 环境干扰测试 unset LD_LIBRARY_PATH unset ASCEND_OPP_PATH ./tests/ge/ut/ge/ut_libge_multiparts_utest # 可以通过 --gtest_list_tests 查看包含的单用例,并通过 --gtest_filter 参数执行单用例
  • 清理产物:

    UT/ST测试用例编译输出目录为build_utbuild_st,如果想清除历史编译记录,可执行如下操作:

    rm -rf build_ut/ build_st/ output/ build/ build_out/ cov/

[!NOTE]说明tests/run_test.sh脚本支持的详细命令参数可通过bash tests/run_test.sh -h查看。

4.5 安装与卸载

  • 安装

    本地验证完成后,可执行如下命令安装编译生成的GE软件包,执行安装命令时,请确保安装用户对软件包具有可执行权限。

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

    [!CAUTION]注意

    • 此处的安装路径(无论默认还是指定)需与前面安装toolkit包时的路径保持一致。安装完成后,用户编译生成的GE软件包会替换已安装CANN开发套件包中的GE相关软件。
    • cann-dflow-executor_<version>_<arch>.run软件包仅在使用dflow特性时需要,若仅使用GE图编译和执行功能,可选择不安装。该包中含有cann-udf-compat.tar.gz(UDF兼容升级包),会在业务启动时加载至Device侧,加载过程中驱动默认会进行安全验签,以确保包的可信性。开发者通过本仓源码自行编译产生的cann-udf-compat.tar.gz不含签名头,因此必须关闭驱动的安全验签机制才能使用。
      关闭验签方式:
      关闭验签功能依赖Ascend NPU驱动软件包(Ascend HDK 25.5.T2.B001及以上版本),可以通过该Ascend HDK配套的npu-smi工具查询版本和关闭验签,详见查询基本信息,设置自定义验签能力使能状态,设置验签模式命令文档,需要以root用户在物理机上执行(由于权限问题,WebIDE暂不支持)。
      以device 0为例 (其中 -i 后面的参数是device id):
      npu-smi info # 查询基本信息,包含驱动版本
      npu-smi set -t custom-op-secverify-enable -i0-d 1 # 使能自定义验签
      npu-smi set -t custom-op-secverify-mode -i0-d 0 # 设置成"关闭验签模式"
  • 卸载

    若您想卸载安装的cann-<component>_<version>_<arch>.run软件包,可执行如下命令。

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

    执行时需要将上述命令中的软件包名称替换为实际的自定义cann-<component>_<version>软件包名称。

安装完成后,可以参考样例执行运行样例。

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 17:58:57

Taotoken模型广场如何帮助开发者快速选型与切换合适的大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken模型广场如何帮助开发者快速选型与切换合适的大模型 对于需要接入大模型能力的开发者而言&#xff0c;面对市场上众多的模…

作者头像 李华
网站建设 2026/5/9 17:58:24

图神经网络与强化学习:破解复杂网络预测与优化难题的AI融合范式

1. 项目概述&#xff1a;当AI遇见复杂网络如果你研究过生态学&#xff0c;可能会为一个问题头疼&#xff1a;如何预测某个关键物种的消失&#xff0c;会对整个食物网产生怎样的连锁反应&#xff1f;如果你从事城市规划&#xff0c;可能每天都在思考&#xff1a;如何在有限的预算…

作者头像 李华
网站建设 2026/5/9 17:56:57

AI与组学大数据融合:驱动植物胁迫智能诊断与预测

1. 项目概述&#xff1a;当植物“生病”时&#xff0c;AI如何成为它的“诊断医生”在农业科研与生产一线待了十几年&#xff0c;我见过太多这样的场景&#xff1a;一片长势喜人的作物&#xff0c;可能因为一场突如其来的干旱、一次不易察觉的病害侵染&#xff0c;或者土壤里某种…

作者头像 李华
网站建设 2026/5/9 17:56:08

使用Taotoken后开发团队在模型API调用稳定性与延迟方面的实际体验分享

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken后开发团队在模型API调用稳定性与延迟方面的实际体验分享 1. 背景与接入动机 我们是一个约十五人的中小型开发团队&a…

作者头像 李华
网站建设 2026/5/9 17:54:39

强化学习优化关键点检测:Rex-Omni模型解析

1. 项目概述&#xff1a;当强化学习遇上关键点检测在计算机视觉领域&#xff0c;关键点检测一直扮演着基础而关键的角色。想象一下教机器人抓取杯子——它需要精确识别杯口、把手等部位的位置&#xff1b;或是分析运动员动作——需要追踪关节点的运动轨迹。这些场景的核心就是关…

作者头像 李华