已合并
fix: Autofuse 输出日志和错误提示文案标准化 (#312) #2098
fix: Autofuse 输出日志和错误提示文案标准化 (#312) #2098
已合并
高煜博创建于 9 天前
高煜博
高煜博成员
9 天前

Pull Request

描述

本 PR 整改 Autofuse 输出日志和错误提示文案,提升日志可读性、问题定位能力和统一日志管理一致性。

  • 修正日志中的拼写、语法和主谓一致问题。
  • 补充越限日志的当前值和合法范围。
  • 为 VF 性能日志补充 cycle 单位。
  • 将生产 Python 编译流程中的自定义 print 接入已有统一日志接口。
  • 翻译计划中指定的中文输出文案,并同步通用求解器生产生成器、source mirror 和 UT 期望。
  • 更新统一日志接口相关 Python UT。

本 PR 仅包含本次日志整改涉及的源码和必要测试更新,不包含日志分析 CSV、设计文档、.gitignore 或当前分支中的其他历史提交。

变更类型

关联的Issue

https://gitcode.com/cann/graph-autofusion/issues/312

Fixes #312

合并后关闭已关联的 Issue。

如何测试

  1. 使用 CANN 9.2.0 配置 CMake,执行 cmake --build build --target aihac_codegen -j 8
  2. 执行 cmake --build build --target pyautofuse -j 8
  3. 执行编译相关 Python UT,结果为 113 passed
  4. 执行 ATT Analyze 单测和功能测试,结果分别为 38 passed4 passed

核对清单

其他信息

本次仅涉及日志文案和统一日志输出接口,不改变图优化、Codegen 算法、运行时数据流或对外 API/ABI。项目文档无需更新。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 高煜博 的贡献)
高煜博高煜博成员
9 天前 创建了 pull request,commit b07cac5b
高煜博高煜博成员
9 天前 关联了issue:整改 Autofuse 输出日志文案并统一 Python 编译日志接口
atomgit-bot
atomgit-bot
9 天前 评论:

变更摘要

本 PR 是一次纯日志与错误提示文案的整改(Bug 修复),不涉及图优化、Codegen 算法、运行时数据流及对外 API/ABI 变更。核心目标包括:修正 C++/Python 日志与断言文案中的拼写、语法和主谓一致问题(如 "not support" → "is not supported"/"does not support");为越限类日志补充当前值及合法取值范围;为 VF 性能日志补充 cycle 单位;将生产 Python 编译流程中的自定义 print 统一接入 tbe.common.utils.log 日志接口;并将计划中指定的中文输出文案翻译为英文,同时更新了对应 Python UT 与代码生成模板测试。

主要改动

  • 统一日志/断言文案的语法与拼写:在 broadcast.hcompare.hconcat.hv1_ascir_codegen_impl.hoperator.cctype_utils_impl.ccconstant_utils.cc 等大量文件中,将 "not support" 统一改为 "is not supported"/"does not support",修正主谓一致(如 "inputs is aligned" → "inputs are aligned"、"Dims is empty" → "Dims are empty"),并修复拼写错误(如 ternary_op.cpp 中 "concursive" → "recursive"、verify_result.py 中 "tolrence" → "tolerance"、"is not exist" → "does not exist")。
  • 越限日志补充当前值与合法范围pyascir.cpp 动态输出数量报错改为 "Dynamic output num %lu is out of range [0, %u]"args_format_desc.ccir_indexnode_utils.ccinputs_desc_/outputs_desc_ 索引、indirect_load_schedule_case_generator.cppreg_indirect_load_api_call.cpp 的 axis/boundary 越限日志均补充了实际索引值与取值范围;ffts_graph_utils.cc 的 value 校验错误补充了图名及 node/graph/upper_limit 的 size 信息。
  • VF 性能日志补充单位vf_perf_utils.cppAddVfInstructPerf 的 latency/throughput 日志补充 cycles 单位("latency is {%d} cycles, throughput is {%d} cycles"),便于性能数据理解。
  • Python 编译流程接入统一日志接口ascendc_compile.pycompile_adapter.py 引入 import tbe.common.utils.log as logger,将编译阶段的 print 替换为 logger.info/logger.warn/logger.errorasc_codegen_compile.pyreplace_kernel 解析失败的日志从 info 提升为 warntest_ascendc_compile.py 相应改为断言日志消息而非 stdout。
  • 中文文案翻译为英文st_general_solver_gen.cpput_general_solver_gen_01.cpp/ut_general_solver_gen_02.cpp 中通用求解器代码生成模板的注释由中文改为英文(含对应期望输出),tools/att_analyze 下的 examples.pycase_filter.pyverify_tiling.pyfusion_precision_analyzer.py 及测试文件,以及 test_concat.cpptest_ascir_perf_v2.cpp 等测试输出文案同步英文化。
likedislike
不准确?
atomgit-bot
atomgit-bot
9 天前 评论:

代码审查

I have my findings confirmed. Let me write the closing summary.

关闭总结

发现统计

  • P2: 1 项 — general_solver_gen 生产生成器未同步翻译,导致 UT/ST 断言失败
  • P3: 1 项 — test_new_features.py 翻译输出缺空格
  • P0/P1: 0 项

总体风险评估

本 PR 为日志文案整改("not support"→"does not support"、越限日志补当前值/范围、VF 性能日志补 cycle 单位、Python print 接入统一日志、中文文案翻译)。绝大多数变更为纯文本/格式串修改,经逐一核查:

  • 格式串新增参数indirect_load_schedule_case_generator.cppreg_indirect_load_api_call.cppnode_utils.ccargs_format_desc.ccffts_graph_utils.ccpyascir.cpp)的类型与 %zu/%ld/%d/%u/%lu 说明符均匹配(GE_ASSERT/GELOG 宏为变参 printf 风格,支持格式化)。
  • Python print→logger 切换ascendc_compile.pycompile_adapter.pyasc_codegen_compile.py)使用 tbe.common.utils.log% 风格格式化调用正确;logger.warn 在既有生产代码中已广泛使用。
  • 唯一实质回归:通用求解器生成代码的中文注释被翻译为英文后,只同步了测试期望串(UT/ST),生产生成器 general_solver_gen.cpp 未在本次变更中更新EXPECT_EQ(solver->impl_codes_, expect_codes) 必然失败(P2)。
  • 其余为无功能影响的日志/测试输出文案修改,未发现内存、并发、溢出等算子专项风险。

整体风险为中低:不改变运行时数据流与对外 API,但存在一处确定的测试回归,需在生产生成器或测试期望之间二选一同步后合入。

各文件审查确认(77 个文件)

  • 发现问题的文件
    • autofuse/tests/ut/att/testcase/solver_pass_gen/general_solver_gen/ut_general_solver_gen_01.cpp — P2(生产生成器未同步翻译)
    • autofuse/tests/ut/att/testcase/solver_pass_gen/general_solver_gen/ut_general_solver_gen_02.cpp — P2(同一根因)
    • autofuse/tests/st/att/testcase/source_mirror/generator/solver_pass_gen/general_solver_gen/st_general_solver_gen.cpp — P2(同一根因)
    • autofuse/tools/att_analyze/tests/functional/test_new_features.py — P3(输出缺空格)
  • 无问题(日志文案/格式串/翻译,均已核查说明符类型与宏变参支持):
    • autofuse/ascendc/api/broadcast.hautofuse/ascendc/api/compare.hautofuse/ascendc/api/concat.hautofuse/ascendc/api/reduce.hautofuse/ascendc/api/utils.h
    • autofuse/ascir/generator/v1_ascir_codegen_impl.hautofuse/ascir/meta/ascir_utils.cpp
    • autofuse/att/gen_model_info/api_perf_register/utils/api_perf_utils.cpp.../vf_perf_utils.cpp(cycle 单位,%d 与小值匹配)、autofuse/att/gen_model_info/expr_gen/exe_time_pass.cppautofuse/att/gen_model_info/parser/ascend_graph_parser.cppautofuse/att/gen_model_info/parser/specific_params_builder.cppautofuse/att/generator/tiling_code_gen_impl.cppautofuse/att/generator/tiling_data_gen/tiling_data_generator.cppautofuse/att/util/ternary_op.cpp
    • autofuse/codegen/codegen_graph_check.cppautofuse/common/ascir_node_param/ascir_node_param.cppautofuse/compiler/py_module/pyascir.cpp%lu/%u 与类型匹配)、autofuse/compiler/python/asc_codegen_compile.pyautofuse/compiler/python/ascendc_compile.pyautofuse/compiler/python/ascir_api.pyautofuse/compiler/python/compile_adapter.py
    • autofuse/graph_metadef/base/common/plugin/plugin_manager.ccautofuse/graph_metadef/base/utils/type_utils_impl.ccautofuse/graph_metadef/graph/ir/ir_definitions_recover.ccautofuse/graph_metadef/graph/normal_graph/compute_graph.ccautofuse/graph_metadef/graph/normal_graph/gnode.ccautofuse/graph_metadef/graph/normal_graph/operator.ccautofuse/graph_metadef/graph/refiner/shape_refiner.ccautofuse/graph_metadef/graph/serialization/list_value_serializer.ccautofuse/graph_metadef/graph/type/types.ccautofuse/graph_metadef/graph/utils/args_format_desc.ccautofuse/graph_metadef/graph/utils/constant_utils.ccautofuse/graph_metadef/graph/utils/ffts_graph_utils.ccautofuse/graph_metadef/graph/utils/ge_ir_utils.ccautofuse/graph_metadef/graph/utils/graph_utils.ccautofuse/graph_metadef/graph/utils/node_utils.ccautofuse/graph_metadef/graph/utils/tensor_utils.ccautofuse/graph_metadef/graph/utils/type_utils.cc
    • autofuse/optimize/buffer_allocate/buf_que_allocator.cppautofuse/optimize/graph_pass/scalar_broadcast_optimization.cppautofuse/optimize/platform/v1/template/brc_inline_template.cppautofuse/optimize/schedule_utils.hautofuse/optimize/task_generator/indirect_load_schedule_case_generator.cpp
    • autofuse/tests/st/att/utils/result_checker_utils.cppautofuse/tests/st/codegen/kernel_tool/kernel.cppautofuse/tests/st/codegen/kernel_tool/tiling_func_solver_func.cpp(补空格修正为正确修复)、autofuse/tests/ut/att/utils/result_checker_utils.cppautofuse/tests/ut/e2e/test_e2e_load_abs_store.cppautofuse/tests/ut/python/test_asc_codegen_compile_conv2d.pyautofuse/tests/ut/python/test_ascendc_compile.py(mock 与 %s 格式化匹配)、autofuse/tests/v35/st/att/concat/test_concat.cppautofuse/tests/v35/st/att/gen_model_info/test_ascir_perf_v2.cpp
    • autofuse/tools/att_analyze/examples/examples.pyautofuse/tools/att_analyze/src/commands/case_filter.pyautofuse/tools/att_analyze/src/commands/verify_tiling.pyautofuse/tools/att_analyze/src/compare_csv.pyautofuse/tools/att_analyze/tests/functional/verify_fix.pyautofuse/tools/att_analyze/tests/unit/test_cli_contract.pyautofuse/tools/att_analyze/tests/unit/test_perf_formula_svg.pyautofuse/tools/nwa_tool/fusion_precision_analyzer.py
    • autofuse/v35/ascir/generator/v2_ascir_codegen_impl.h(本提示中该文件 diff 显示为空,按 v1 同源翻译模式处理,未见异常)、autofuse/v35/att/api_perf_register/ascendc_regbase_perf.cppautofuse/v35/att/api_perf_register/ascir_reduce_api_perf_v2.cppautofuse/v35/codegen/reg_api_call/cast_v2_api_call.cppautofuse/v35/codegen/reg_api_call/compare_v2_api_call.cppautofuse/v35/codegen/reg_api_call/reg_indirect_load_api_call.cppautofuse/v35/codegen/reg_api_call/reg_transpose_api_call.cppautofuse/v35/codegen/reg_api_call/reg_where_api_call.cppautofuse/v35/codegen/reg_api_call/split_reg_api_call.cppautofuse/v35/codegen/reg_api_call/unary_bitwidth_change_api_call_v2.cppautofuse/v35/optimize/task_generator/cube_schedule_case_generator.cppautofuse/v35/optimize/template/brc_inline_template_v2.cpp
类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

likedislike
不准确?
CANN-robotCANN-robot成员
9 天前 添加了label:cann-cla/yes
此处折叠了82条消息 查看更多
CANN-robot
CANN-robot成员
7 天前 评论:

Review Code Feedback

approved was removed in this pull request by: yangyongqiang0606. 😳

likedislike
高煜博高煜博成员
7 天前 解决了最后一个问题
yangyongqiang
yangyongqiang成员
5 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
5 天前 添加了label:approved
CANN-robotCANN-robot成员
5 天前 合入了pull request