已合并
fix: Autofuse 输出日志和错误提示文案标准化 (#312) #2098
高煜博创建于 9 天前
fix: Autofuse 输出日志和错误提示文案标准化 (#312) #2098
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 高煜博 的贡献)9 天前 关联了issue:整改 Autofuse 输出日志文案并统一 Python 编译日志接口
atomgit-bot
9 天前 评论:
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.h、compare.h、concat.h、v1_ascir_codegen_impl.h、operator.cc、type_utils_impl.cc、constant_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.cc的ir_index、node_utils.cc的inputs_desc_/outputs_desc_索引、indirect_load_schedule_case_generator.cpp与reg_indirect_load_api_call.cpp的 axis/boundary 越限日志均补充了实际索引值与取值范围;ffts_graph_utils.cc的 value 校验错误补充了图名及 node/graph/upper_limit 的 size 信息。 - VF 性能日志补充单位:
vf_perf_utils.cpp中AddVfInstructPerf的 latency/throughput 日志补充cycles单位("latency is {%d} cycles, throughput is {%d} cycles"),便于性能数据理解。 - Python 编译流程接入统一日志接口:
ascendc_compile.py、compile_adapter.py引入import tbe.common.utils.log as logger,将编译阶段的print替换为logger.info/logger.warn/logger.error;asc_codegen_compile.py将replace_kernel解析失败的日志从info提升为warn;test_ascendc_compile.py相应改为断言日志消息而非 stdout。 - 中文文案翻译为英文:
st_general_solver_gen.cpp及ut_general_solver_gen_01.cpp/ut_general_solver_gen_02.cpp中通用求解器代码生成模板的注释由中文改为英文(含对应期望输出),tools/att_analyze下的examples.py、case_filter.py、verify_tiling.py、fusion_precision_analyzer.py及测试文件,以及test_concat.cpp、test_ascir_perf_v2.cpp等测试输出文案同步英文化。


不准确?
atomgit-bot
9 天前 评论:
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.cpp、reg_indirect_load_api_call.cpp、node_utils.cc、args_format_desc.cc、ffts_graph_utils.cc、pyascir.cpp)的类型与%zu/%ld/%d/%u/%lu说明符均匹配(GE_ASSERT/GELOG 宏为变参 printf 风格,支持格式化)。 - Python print→logger 切换(
ascendc_compile.py、compile_adapter.py、asc_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.h、autofuse/ascendc/api/compare.h、autofuse/ascendc/api/concat.h、autofuse/ascendc/api/reduce.h、autofuse/ascendc/api/utils.hautofuse/ascir/generator/v1_ascir_codegen_impl.h、autofuse/ascir/meta/ascir_utils.cppautofuse/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.cpp、autofuse/att/gen_model_info/parser/ascend_graph_parser.cpp、autofuse/att/gen_model_info/parser/specific_params_builder.cpp、autofuse/att/generator/tiling_code_gen_impl.cpp、autofuse/att/generator/tiling_data_gen/tiling_data_generator.cpp、autofuse/att/util/ternary_op.cppautofuse/codegen/codegen_graph_check.cpp、autofuse/common/ascir_node_param/ascir_node_param.cpp、autofuse/compiler/py_module/pyascir.cpp(%lu/%u与类型匹配)、autofuse/compiler/python/asc_codegen_compile.py、autofuse/compiler/python/ascendc_compile.py、autofuse/compiler/python/ascir_api.py、autofuse/compiler/python/compile_adapter.pyautofuse/graph_metadef/base/common/plugin/plugin_manager.cc、autofuse/graph_metadef/base/utils/type_utils_impl.cc、autofuse/graph_metadef/graph/ir/ir_definitions_recover.cc、autofuse/graph_metadef/graph/normal_graph/compute_graph.cc、autofuse/graph_metadef/graph/normal_graph/gnode.cc、autofuse/graph_metadef/graph/normal_graph/operator.cc、autofuse/graph_metadef/graph/refiner/shape_refiner.cc、autofuse/graph_metadef/graph/serialization/list_value_serializer.cc、autofuse/graph_metadef/graph/type/types.cc、autofuse/graph_metadef/graph/utils/args_format_desc.cc、autofuse/graph_metadef/graph/utils/constant_utils.cc、autofuse/graph_metadef/graph/utils/ffts_graph_utils.cc、autofuse/graph_metadef/graph/utils/ge_ir_utils.cc、autofuse/graph_metadef/graph/utils/graph_utils.cc、autofuse/graph_metadef/graph/utils/node_utils.cc、autofuse/graph_metadef/graph/utils/tensor_utils.cc、autofuse/graph_metadef/graph/utils/type_utils.ccautofuse/optimize/buffer_allocate/buf_que_allocator.cpp、autofuse/optimize/graph_pass/scalar_broadcast_optimization.cpp、autofuse/optimize/platform/v1/template/brc_inline_template.cpp、autofuse/optimize/schedule_utils.h、autofuse/optimize/task_generator/indirect_load_schedule_case_generator.cppautofuse/tests/st/att/utils/result_checker_utils.cpp、autofuse/tests/st/codegen/kernel_tool/kernel.cpp、autofuse/tests/st/codegen/kernel_tool/tiling_func_solver_func.cpp(补空格修正为正确修复)、autofuse/tests/ut/att/utils/result_checker_utils.cpp、autofuse/tests/ut/e2e/test_e2e_load_abs_store.cpp、autofuse/tests/ut/python/test_asc_codegen_compile_conv2d.py、autofuse/tests/ut/python/test_ascendc_compile.py(mock 与%s格式化匹配)、autofuse/tests/v35/st/att/concat/test_concat.cpp、autofuse/tests/v35/st/att/gen_model_info/test_ascir_perf_v2.cppautofuse/tools/att_analyze/examples/examples.py、autofuse/tools/att_analyze/src/commands/case_filter.py、autofuse/tools/att_analyze/src/commands/verify_tiling.py、autofuse/tools/att_analyze/src/compare_csv.py、autofuse/tools/att_analyze/tests/functional/verify_fix.py、autofuse/tools/att_analyze/tests/unit/test_cli_contract.py、autofuse/tools/att_analyze/tests/unit/test_perf_formula_svg.py、autofuse/tools/nwa_tool/fusion_precision_analyzer.pyautofuse/v35/ascir/generator/v2_ascir_codegen_impl.h(本提示中该文件 diff 显示为空,按 v1 同源翻译模式处理,未见异常)、autofuse/v35/att/api_perf_register/ascendc_regbase_perf.cpp、autofuse/v35/att/api_perf_register/ascir_reduce_api_perf_v2.cpp、autofuse/v35/codegen/reg_api_call/cast_v2_api_call.cpp、autofuse/v35/codegen/reg_api_call/compare_v2_api_call.cpp、autofuse/v35/codegen/reg_api_call/reg_indirect_load_api_call.cpp、autofuse/v35/codegen/reg_api_call/reg_transpose_api_call.cpp、autofuse/v35/codegen/reg_api_call/reg_where_api_call.cpp、autofuse/v35/codegen/reg_api_call/split_reg_api_call.cpp、autofuse/v35/codegen/reg_api_call/unary_bitwidth_change_api_call_v2.cpp、autofuse/v35/optimize/task_generator/cube_schedule_case_generator.cpp、autofuse/v35/optimize/template/brc_inline_template_v2.cpp
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 1 |
💬 仅评论


不准确?
9 天前 添加了label:cann-cla/yes
此处折叠了82条消息 查看更多
CANN-robot
7 天前 评论:
7 天前 评论:
7 天前 解决了最后一个问题
yangyongqiang
5 天前 评论:
5 天前 评论:
/approve


5 天前 添加了label:approved
5 天前 合入了pull request
Pull Request
描述
本 PR 整改 Autofuse 输出日志和错误提示文案,提升日志可读性、问题定位能力和统一日志管理一致性。
cycle单位。print接入已有统一日志接口。本 PR 仅包含本次日志整改涉及的源码和必要测试更新,不包含日志分析 CSV、设计文档、
.gitignore或当前分支中的其他历史提交。变更类型
关联的Issue
https://gitcode.com/cann/graph-autofusion/issues/312
Fixes #312
合并后关闭已关联的 Issue。
如何测试
cmake --build build --target aihac_codegen -j 8。cmake --build build --target pyautofuse -j 8。113 passed。38 passed和4 passed。核对清单
其他信息
本次仅涉及日志文案和统一日志输出接口,不改变图优化、Codegen 算法、运行时数据流或对外 API/ABI。项目文档无需更新。