您好,欢迎向 ATK 提交Issue!
我们已收到您的反馈,感谢您对开源社区的支持。
处理时效:维护团队将在24小时内查看并回复您的问题(工作日)。
自助查询:再等待期间,建议您先查阅仓库内的文档资料,可能已有解决方案。
请确保Issue描述清晰,包含复现步骤和日志,这将帮我们更快定位问题。谢谢!


您好,已收到反馈,届时将会补充完整资料


- kernel 后端是否为受支持场景,边界是什么?
已支持 kernel 后端,适用边界可以理解为:面向已经以 GE op_type 形态注册并部署到 OPP 的算子。kernel_name 实际会作为 op_type 传给 tiktools.run,随后生成 atc --singleop 输入 JSON,再通过 ACL 执行 .om。Abs 是 OPP 内可被 ATC singleop 编译识别的 op_type;未注册进 OPP 的句柄式 C API 名称不能直接当作 kernel_name 使用。
- atc --singleop 转 .om 路径成熟度如何?
代码和测试层面已支持该链路,文档资料需补充。
- 执行器注册表是否是受支持扩展点?
是可扩展的。可以通过kernel_api_type 调 ApiExecuteFactory.get_executor();ApiExecuteFactory 支持通过 -p/--plugin_path 注册外部 API 执行器。这是atk固有的插件机制,在自定义执行器中可以调用任意接口,使用任意执行方式,只要能够返回输出即可。
- 是否需要补文档与最小示例?
当前文档对 kernel 后端相关资料说明不足,后续会整理补充。
- acl_execute.py 中 .o / create_kernel 分支是什么定位?
当前默认 kernel_function 路径会传 op_model_path,因此 acl_execute.py 走的是:
acl.op.set_model_dir(op_model_path)
acl.op.execute_v2(...)
也就是 .om/模型目录加载路径。atk/ATK-dev/atk/tasks/backends/tools/acl_execute.py:301
kernel_meta/*.o + acl.op.register_compile_func + acl.op.create_kernel 这条分支只在 op_model_path 为空时触发。atk/ATK-dev/atk/tasks/backends/tools/acl_execute.py:306
所以它更像是另一种低层 ACL kernel 注册执行路径,不是当前 ATK kernel 后端默认主链路。当前默认主链路仍是 atc --singleop 生成 .om 后执行。
附加问题:
- pytz 未声明
这个问题成立,后续会补到依赖中。
- 版本号未随功能更新
当前只在大功能更新时更新版本号,小功能更改保持不变。


背景
在评估使用 ATK 测试社区算子工程时,我们发现源码中存在一条 kernel 后端通路,但在《ATK 使用指南》中没有找到对应说明。我们已在 26.8.8 上实测确认这条链路可以工作,现在想确认的是它的定位与支持状态。
已验证的事实(ATK 26.8.8,源码 a0dfc9a 构建)
1. 链路可端到端跑通
用例填
kernel_name: Abs(CANN 内置算子,已注册进 OPP),节点配置backend: kernel+backend: cpu,atk task执行结果:2 条用例全部执行成功,精度比对通过率 100%,耗时 37s。产物完整,逐站可验:
kernel/Abs/0/abs.json——atc --singleop的输入描述(input_desc/output_desc/attr)kernel/Abs/0/0_Abs_0_2_7_0_2_7.om—— ATC 编译产物(12K)kernel/Abs/0/kernel_meta/te_abs_<hash>.json—— 从 OPP 取到实现后编出的 TBE kernelPROF_*—— 性能采集目录调用链与源码一致:
KernelBackend(kernel_backend.py:43-45)→@register("kernel_function")(function_api.py:164)→tiktools.run(tools/init.py:201,其中读取ASCEND_OPP_PATH)→atc.generate_om(tools/atc_om.py:40-42, 70,子进程执行atc --singleop)→acl.op.execute_v2。2. 对照实验:这条链依赖 OPP 中的 op_type 注册
保持上述用例的全部内容不变,仅把
kernel_name从Abs改为GemmEx(ops-blas 中一个算子的名字,该仓不产生 GE 注册):kernel_name: Abskernel_name: GemmExatc --singleop被调起.om产物我们也确认了该 SoC(
ascend910_93)的 OPP 内置算子信息表共注册 1188 个 op_type,其中 blas 类为零(trsm/syrk/gemv/spmv/getrf/blas均为 0 命中),opp/vendors/为空。3. 文档中仍未见相关说明
《02 参考资料/节点配置文件说明》中
backend取值列为npu、cpu、gpu、aclnn,未包含kernel;全文档未检索到kernel_name、kernel_function、-b kernel的说明或示例;examples/目录只提供了 aclnn 与 pytorch 两类样例。问题
1. kernel 后端是否为受支持的测试场景?适用边界是什么?
从实测看,它要求算子已按 GE op_type 注册并部署进 OPP(
kernel_name填的是 op_type)。想确认这是否是设计意图,以及它面向的算子形态具体是什么——例如「有 GE 注册但没有 aclnn 层」的算子(这类在 ops-math 的math/下约占三分之一)是否正是它的目标场景。(不进 OPP 的句柄式 C API 算子库能否测试,我们另开了 #23 单独请教,此处不重复。)
2.
tools/atc_om.py的atc --singleop→.om路径,成熟度如何?是实验性/内部验证用代码,还是可用于正式测试场景?后续版本是否有兼容性承诺(是否可能调整或移除)?我们需要据此决定能否把它写进对外的测试流程。
3. 执行器注册表是否为受支持的扩展点?
KernelBackend通过ApiExecuteFactory按kernel_api_type取执行器,看起来是可插拔的。如果我们为句柄式 C API 自行实现一个执行器并注册进去,这是否是官方推荐/支持的扩展方式?有没有需要遵守的约定?4. 若该场景受支持,能否补充文档与最小可运行示例?
主要是 YAML 中
kernel_name、api_type的写法,-b kernel与nodes.yaml的用法,以及对算子前置条件(须在 OPP 中注册)的说明。5. (相关)另一条 kernel 执行分支的定位
atk/tasks/backends/tools/acl_execute.py中还有一条基于kernel_meta/*.o与acl.op.register_compile_func/create_kernel的执行分支,它与上述 kernel 后端标准链路是什么关系?在什么条件下会被使用?附带发现(两个小问题)
pytz未在requirements.txt中声明:atk/db/dao/case_result_dao.py直接import pytz,但依赖清单中没有它。全新环境安装后pip show atk正常、atk case --help也正常,一执行atk task才报ModuleNotFoundError: No module named 'pytz'。版本号在一段时间内未随功能更新:
atk/__init__.py的PACKAGE_VERSION在7220f27(2026-08-07)时仍为26.5.14,直到b3e4691(2026-08-11,"新功能同步")才更新为26.8.8。因此从 8 月初 master 构建出的包会自称26.5.14,容易被误认为是 5 月的版本。环境信息