ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RegisterCallBackFunc:给 GE 注册 Summary/Checkpoint 回调

RegisterCallBackFunc:给 GE 注册 Summary/Checkpoint 回调 RegisterCallBackFunc给 GE 注册 Summary/Checkpoint 回调【免费下载链接】awesome-design-systems ⚒ A collection of awesome design systems项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-design-systemsRegisterCallBackFunc用于在 GE 中注册 Summary 与 Checkpoint 回调声明于 ge_api.h 头文件链接libge_runner.so。当你下发的图中带有 Summary 或 Checkpoint 算子时GE 会调用你注册的回调函数。快速上手三步完成回调注册#include ge/ge_api.h // 回调函数签名必须与 pCallBackFunc 的 typedef 完全一致 uint32_t OnGraphFinished(uint32_t graph_id, const std::mapstd::string, ge::Tensor params_list) { // 这里拿到图执行完成后一次性返回的 Summary/Checkpoint 结果 return 0; } int main() { pCallBackFunc callback OnGraphFinished; Status ret RegisterCallBackFunc(Summary, callback); // ret 不是 SUCCESS 时不要继续下发图否则运行到对应算子会直接报错 return 0; }注意回调的入参graph_id标识哪张图params_list是 GE 回传的结果张量集合你只需保证函数签名与所用重载的 typedef 匹配。接口签名两个重载怎么选Status RegisterCallBackFunc(const std::string key, const pCallBackFunc callback); Status RegisterCallBackFunc(const char *key, const session::pCallBackFunc callback);两个重载的区别在于key的参数类型std::string引用版与字符指针版。字符指针版搭配session::pCallBackFuncstd::string版搭配非限定名pCallBackFunc两者 typedef 的 map key 类型不同见下文选哪个取决于你使用的接口版本。RegisterCallBackFunc 参数速查参数方向说明key输入回调类型关键字仅支持Summary与Save两个取值分别对应 Summary 与 Checkpoint 算子callback输入回调函数指针函数签名需与下表 typedef 完全一致返回值类型为uint32_t两种重载各自对应的 typedef 如下// 对应 std::string key 重载 typedef uint32_t (*pCallBackFunc)(uint32_t graph_id, const std::mapstd::string, ge::Tensor params_list); // 对应 char* key 重载session 命名空间 typedef uint32_t (*pCallBackFunc)(uint32_t graph_id, const std::mapAscendString, ge::Tensor params_list);如果你写的是函数指针直接将其赋值给对应 typedef 即可用 lambda 或成员函数时需要先用std::function或函数指针中转确保最终类型一致。返回值与错误码回调注册失败怎么排查取值含义建议处理SUCCESS注册成功可继续下发包含对应算子的图FAILED注册失败先确认key是否为Summary/Save再核对回调函数签名是否与 typedef 一致GE_SESSION_MANAGER_NOT_INITSession 管理未初始化先完成 Session 初始化流程再调用本接口⚠️ 遇到FAILED时最常见的坑是签名不匹配两个 typedef 的params_list分别使用std::string和AscendString作为 map key混用会导致注册行为不符合预期。限制条件与避坑key只支持Summary和Save两种取值其他字符串都会注册失败其中 Checkpoint 算子对应的关键字是Save。⚠️ 如果图中包含 Summary 或 Checkpoint 算子但未注册回调下发图时会直接报错请在建图前先完成注册。目前只支持图执行完成后一次性调用回调函数做不到算子粒度或分步触发。回调在图执行路径上被调用实现里建议只做轻量数据搬运耗时逻辑放到其他线程。版本提示[!NOTE] 参数类型为string的接口const std::string key重载及配套的std::mapstd::string, ge::Tensortypedef在后续版本会废弃。新代码建议直接使用非 string 接口即const char *key重载与AscendString版 typedef避免日后迁移成本。【免费下载链接】awesome-design-systems ⚒ A collection of awesome design systems项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-design-systems创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表