news 2026/9/5 22:15:19

GE 回调函数注册完整指南:三步用 RegisterCallBackFunc 配好 Summary 与 Save 回调

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GE 回调函数注册完整指南:三步用 RegisterCallBackFunc 配好 Summary 与 Save 回调

GE 回调函数注册完整指南:三步用 RegisterCallBackFunc 配好 Summary 与 Save 回调

【免费下载链接】awesome-design-systems💅🏻 ⚒ A collection of awesome design systems项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-design-systems

开源项目 awesome-design-systems 的接口参考资料里,GE 的RegisterCallBackFunc回调函数注册接口是打通 Summary 与 Checkpoint 能力的关键入口。你下发给 GE 的图中如果带有这两类算子,就必须先完成回调注册,否则执行时会直接报错。

什么是 RegisterCallBackFunc,什么时候需要它

一句话理解:这是你和 GE 之间的一次“预约”。注册之后,GE 在执行图的过程中遇到 Summary 或 Checkpoint 算子,就会调用你提供的回调函数来处理。

典型场景是:图执行结束后,你的业务需要拿回中间参数(比如保存模型、输出汇总信息),但不想把具体处理逻辑硬编码进图里。这时就可以把活儿交给自己的回调函数。

准备工作:2 个文件和 1 个前置条件

先引入两个依赖,缺一不可:

  • 头文件:#include <ge/ge_api.h>
  • 库文件:libge_runner.so

还有一个软性前置条件:Session 管理组件必须已经初始化。否则注册调用会直接返回GE_SESSION_MANAGER_NOT_INIT,这也是“注册为什么失败”这类问题最常见的根源,排查时请优先检查初始化顺序。

如何注册 Summary 或 Save 回调:只需 3 步

  1. 编写回调函数:入参为graph_iduint32_t)和params_list(键值映射到ge::Tensor),返回uint32_t
  2. 调用RegisterCallBackFunc,把回调传进去,key"Summary""Save"
  3. 检查返回的Status,只有拿到SUCCESS才算注册完成。

函数原型有两个重载,其中 string 数据类型的版本后续会废弃,新代码请直接选用非 string 数据类型的版本:

Status RegisterCallBackFunc(const char *key, const session::pCallBackFunc &callback);

最小调用示例长这样:

Status status = RegisterCallBackFunc("Summary", MySummaryCallback);

key 和 callback 分别该传什么

参数该传什么传错或漏传会发生什么
key回调类型关键字,只支持"Summary""Save"两个取值传其他字符串会导致注册失败,返回FAILED
callback符合pCallBackFunc签名的函数指针签名与 typedef 定义不一致时编译就过不了

两个重载对应两种回调签名,区别在于params_list的键类型:

签名params_list键类型建议
pCallBackFunc(string 版)std::string后续版本将废弃,不建议新代码使用
session::pCallBackFunc(AscendString 版)AscendString✅ 推荐使用

返回的错误码意味着什么,接下来怎么处理

返回的Status意味着什么接下来怎么做
SUCCESS回调函数注册成功无需额外操作,可以下发图了
GE_SESSION_MANAGER_NOT_INITSession 管理未初始化检查是否漏了初始化步骤,先初始化再注册
FAILED注册失败核对key取值和回调签名后重试

漏注册回调会报什么错

如果图中带有 Summary 或 Checkpoint 算子,却没有事先注册对应回调,GE 会直接报错,不会静默跳过。💡 这是新手最常踩的坑之一:把“注册回调”当成下发图之前的必做检查项,这个报错基本就不会再出现。

三个必须记住的硬限制

  • 回调类型目前只支持SummarySave两个取值,其他关键字不会被识别。
  • 目前只支持图执行完后一次性调用回调函数,不要假设每遇到一次算子触发就回调一次。
  • ⚠️ 未注册回调就下发 Summary、Checkpoint 算子必然报错,建议把注册动作固化进初始化流程。

按上面三步走,RegisterCallBackFunc的注册流程就完整了:先初始化 Session,再选对签名,最后核对key与返回值。

【免费下载链接】awesome-design-systems💅🏻 ⚒ A collection of awesome design systems项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-design-systems

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

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

Cesium填挖方分析组件:空间对齐与混合算法工程实践

简介&#xff1a;本资源是一个面向GIS前端开发者的Cesium三维地理信息分析功能组件&#xff0c;聚焦于工程土方量计算中的填挖方分析场景&#xff0c;特别适配需同时处理真实地形与BIM/倾斜摄影模型的项目需求。资源包共4个文件&#xff0c;含2个核心JavaScript模块&#xff08…

作者头像 李华
网站建设 2026/9/5 22:12:45

基于Netty与Java构建高并发MUD游戏服务器:架构设计与工程实践

简介&#xff1a;本资源是吉林大学Java程序设计课程高分课程设计成果——MUD多人在线文字冒险游戏系统源码&#xff0c;面向Java初学者及课程设计、期末大作业、毕业设计实践者&#xff0c;解决网络编程、多线程会话管理与实时交互等核心教学难点。压缩包共40个文件&#xff0c…

作者头像 李华
网站建设 2026/9/5 22:11:31

调和映射与奇异空间:从正则性理论到液晶缺陷建模

1. 问题背景&#xff1a;为什么 CSDN 上很难搜到这篇报告 先给结论&#xff1a;这次大会报告涉及的是调和映射理论中的 奇异空间 分支&#xff0c;属于几何分析、PDE 与度量几何的交叉方向。 很多做工程和算法的读者看到“调和映射”会先想到图像修复、网格参数化、弹性形变…

作者头像 李华
网站建设 2026/9/5 22:07:30

多AI-Agent协作的量化工作台:盘前盘中盘后自动化闭环架构

前阵子有个读者给我留言&#xff0c;问我一个人怎么盯盘前、盘中、盘后三套流程&#xff0c;还要兼顾策略优化和风控&#xff0c;是不是得组个团队才能扛下来。我当时正好在做QuantBot——一个多AI-Agent协作的量化工作台&#xff0c;把从盘前数据准备、信号生成&#xff0c;到…

作者头像 李华
网站建设 2026/9/5 22:07:16

Telegram X多平台构建指南:从Android到Huawei AppGallery的完整流程

Telegram X多平台构建指南&#xff1a;从Android到Huawei AppGallery的完整流程 &#x1f680; Telegram X作为Telegram官方推出的实验性Android客户端&#xff0c;凭借其流畅的界面体验和强大的多平台支持&#xff0c;已成为众多用户的首选。本指南将带你深入了解Telegram X的…

作者头像 李华
网站建设 2026/9/5 22:05:59

skills4技能库:AI代理技能即插即用的4种场景与上手指南

skills4技能库&#xff1a;AI代理技能即插即用的4种场景与上手指南 【免费下载链接】skills Skills Catalog for Codex 项目地址: https://gitcode.com/GitHub_Trending/skills4/skills skills4是面向AI编码代理Codex的技能目录&#xff0c;把完成特定任务所需的指令、脚…

作者头像 李华