Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
当前 Runtime 在模型捕获或模型运行实例构建场景下,缺少一个标准接口,用于将用户自定义的补充信息与“当前线程最近一次下发的任务”建立关联。
开发者在进行图调试、运行实例分析和 tracing 排查时,通常不仅需要看到 Runtime 默认输出的 task 基础信息,还需要知道该 task 对应的业务语义、阶段标识、调试标签或上下文说明。例如:
在没有统一接口的情况下,用户无法把这些自定义信息和 task 本身建立直接关联,只能依赖外部日志、额外标记或人工对照 tracing 结果进行分析。
因此,需要新增接口 aclrtCacheLastTaskExtendInfo,用于将用户传入的扩展信息缓存到当前线程最后下发的 task 上,并在后续通过 aclmdlRIDebugJsonPrint 导出调试信息时一并输出。
aclrtCacheLastTaskExtendInfo
aclmdlRIDebugJsonPrint
runtime
提升运行时可观测性 应用程序可在 task 下发后立即补充扩展信息,使 Runtime 导出的调试信息不仅包含系统字段,也包含业务侧关心的上下文内容。
提升问题定位效率 在图执行链路较长、task 数量较多的场景下,开发者可基于扩展信息快速识别目标 task,减少 tracing 和 Debug JSON 的分析成本。
支持调试信息自描述 用户可为关键 task 写入业务标签、阶段说明、调试标识等信息,使导出的 task 信息具备更好的自解释能力。
便于工具链联动 扩展信息随 aclmdlRIDebugJsonPrint 一起导出后,可被 tracing 工具、自动分析脚本和可视化平台进一步消费,增强调试链路一致性。
满足运行实例场景的精细化标注需求 在模型捕获或模型运行实例构建场景下,用户可以对关键 task 做细粒度标记,为后续性能分析、异常排查和业务关联提供依据。
典型场景包括:图捕获过程中为关键 task 打业务标签、模型运行实例构建时记录阶段说明信息、tracing 分析时关联业务事件与 Runtime task、导出 Debug JSON 辅助复杂问题定位等。
用户调用:
接口用于将用户传入的扩展信息绑定到当前线程最近一次下发的 task。用户无需额外传入 task 句柄,也无需自行维护 task 与扩展信息的映射关系。
api_error.cc
在 ApiErrorDecorator::CacheLastTaskExtendInfo 中统一完成参数校验与裁剪处理:
ApiErrorDecorator::CacheLastTaskExtendInfo
extendInfoPtr
infoSize
该层只负责接口输入合法性控制,不承担 task 定位和缓存逻辑。
ApiImpl
在 ApiImpl::CacheLastTaskExtendInfo 中完成最近 task 的定位和扩展信息写入,核心流程如下:
ApiImpl::CacheLastTaskExtendInfo
lastStreamId
该设计确保扩展信息与“当前线程最后下发 task”天然对齐,避免额外暴露复杂的 task 标识管理接口。
在 model / task 相关对象中增加扩展信息缓存能力,用于保存最近 task 对应的 ExtendInfo。缓存内容用于后续 Debug JSON 导出,不影响 task 的调度与执行语义。
ExtendInfo
在 graph dump / Debug JSON 导出路径中,若目标 task 上存在扩展信息,则新增 ExtendInfo 字段输出。
该层需要完成以下处理:
这样可以保证用户通过 aclmdlRIDebugJsonPrint 导出结果时,能够直接看到与 task 对应的业务扩展信息。
flowchart TD A[用户调用 aclrtCacheLastTaskExtendInfo] --> B[ACL封装层透传] B --> C[Runtime C API: rtCacheLastTaskExtendInfo] C --> D[ApiErrorDecorator 参数校验] D --> E[空指针检查 / infoSize检查 / 4K裁剪] E --> F[ApiImpl 获取当前 Context] F --> G[获取线程最近下发的 lastStreamId] G --> H[根据 Context 和 StreamId 定位目标 Stream] H --> I[校验 Stream 与 Context 归属关系] I --> J[获取目标 Model] J --> K[缓存 ExtendInfo 到最近 Task] K --> L[DebugJsonPrint 导出 ExtendInfo 字段] K --> M[rtModelTaskDisable / 模型清理] M --> N[清理缓存的 ExtendInfo]
/assign
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
当前 Runtime 在模型捕获或模型运行实例构建场景下,缺少一个标准接口,用于将用户自定义的补充信息与“当前线程最近一次下发的任务”建立关联。
开发者在进行图调试、运行实例分析和 tracing 排查时,通常不仅需要看到 Runtime 默认输出的 task 基础信息,还需要知道该 task 对应的业务语义、阶段标识、调试标签或上下文说明。例如:
在没有统一接口的情况下,用户无法把这些自定义信息和 task 本身建立直接关联,只能依赖外部日志、额外标记或人工对照 tracing 结果进行分析。
因此,需要新增接口
aclrtCacheLastTaskExtendInfo,用于将用户传入的扩展信息缓存到当前线程最后下发的 task 上,并在后续通过aclmdlRIDebugJsonPrint导出调试信息时一并输出。Origin(信息来源)
runtime
Benefit / Necessity (价值/作用)
提升运行时可观测性
应用程序可在 task 下发后立即补充扩展信息,使 Runtime 导出的调试信息不仅包含系统字段,也包含业务侧关心的上下文内容。
提升问题定位效率
在图执行链路较长、task 数量较多的场景下,开发者可基于扩展信息快速识别目标 task,减少 tracing 和 Debug JSON 的分析成本。
支持调试信息自描述
用户可为关键 task 写入业务标签、阶段说明、调试标识等信息,使导出的 task 信息具备更好的自解释能力。
便于工具链联动
扩展信息随
aclmdlRIDebugJsonPrint一起导出后,可被 tracing 工具、自动分析脚本和可视化平台进一步消费,增强调试链路一致性。满足运行实例场景的精细化标注需求
在模型捕获或模型运行实例构建场景下,用户可以对关键 task 做细粒度标记,为后续性能分析、异常排查和业务关联提供依据。
典型场景包括:图捕获过程中为关键 task 打业务标签、模型运行实例构建时记录阶段说明信息、tracing 分析时关联业务事件与 Runtime task、导出 Debug JSON 辅助复杂问题定位等。
Design(设计方案)
1. 用户调用层
用户调用:
aclrtCacheLastTaskExtendInfo接口用于将用户传入的扩展信息绑定到当前线程最近一次下发的 task。用户无需额外传入 task 句柄,也无需自行维护 task 与扩展信息的映射关系。
2. 参数校验层(
api_error.cc)在
ApiErrorDecorator::CacheLastTaskExtendInfo中统一完成参数校验与裁剪处理:extendInfoPtr非空。infoSize大于 0。infoSize大于 4K 时,记录告警日志,并仅保留前 4K 字节作为有效缓存内容。该层只负责接口输入合法性控制,不承担 task 定位和缓存逻辑。
3. API 实现层(
ApiImpl)在
ApiImpl::CacheLastTaskExtendInfo中完成最近 task 的定位和扩展信息写入,核心流程如下:lastStreamId。该设计确保扩展信息与“当前线程最后下发 task”天然对齐,避免额外暴露复杂的 task 标识管理接口。
4. Task 扩展信息缓存层
在 model / task 相关对象中增加扩展信息缓存能力,用于保存最近 task 对应的
ExtendInfo。缓存内容用于后续 Debug JSON 导出,不影响 task 的调度与执行语义。5. Debug JSON 导出层
在 graph dump / Debug JSON 导出路径中,若目标 task 上存在扩展信息,则新增
ExtendInfo字段输出。该层需要完成以下处理:
ExtendInfo字段。这样可以保证用户通过
aclmdlRIDebugJsonPrint导出结果时,能够直接看到与 task 对应的业务扩展信息。6. 调用流程图
flowchart TD A[用户调用 aclrtCacheLastTaskExtendInfo] --> B[ACL封装层透传] B --> C[Runtime C API: rtCacheLastTaskExtendInfo] C --> D[ApiErrorDecorator 参数校验] D --> E[空指针检查 / infoSize检查 / 4K裁剪] E --> F[ApiImpl 获取当前 Context] F --> G[获取线程最近下发的 lastStreamId] G --> H[根据 Context 和 StreamId 定位目标 Stream] H --> I[校验 Stream 与 Context 归属关系] I --> J[获取目标 Model] J --> K[缓存 ExtendInfo 到最近 Task] K --> L[DebugJsonPrint 导出 ExtendInfo 字段] K --> M[rtModelTaskDisable / 模型清理] M --> N[清理缓存的 ExtendInfo]