已合并
多项式问题修复 #44410
zzll创建于 12 天前
多项式问题修复 #44410
已合并
zzll创建于 12 天前
zzll
12 天前

#3945

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)

【修改方案】

请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列
如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”

【接口变更】

请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”

【功能验证】

说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤
新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 zzll 的贡献)
Zzzll
12 天前 创建了 pull request,commit 2d53a5d0
atomgit-bot
atomgit-bot
12 天前 评论:

变更摘要

本次 PR 主要修复了多项式表达式中符号化除数和模运算的分析逻辑。在 analyze_floordiv_expressionanalyze_modular_expression 两个函数中,新增了对 sympy.Symbol 类型除数 / 模数的支持:当 max_remainder_sum == 0 且除数或模数为符号变量(且在 V.kernel.symbol_range_map 中有对应的下界信息)时,允许表达式进行拆分。同时修复了 analyze_modular_expressionFloorDiv 项的转换处理,将 FloorDiv 正确转换为乘法形式,并在成功拆分后重新构造 ModularIndexing 表达式。测试类从 TestUnifiedAxis 重命名为 TestLinearDynamic,并新增了针对符号化表达式的三个单元测试用例。

主要改动

  • analyze_floordiv_expression 新增符号化除数分支:当 max_remainder_sum == 0divisorsympy.Symbol 且在 V.kernel.symbol_range_map 中存在时,利用符号下界(lower_value)判定表达式是否可拆分,并生成对应的 split_form

  • analyze_modular_expression 新增符号化模数分支:类似地,当 max_remainder_sum == 0modsympy.Symbol 且在符号范围映射中存在时,通过比较下界值判定是否可拆分,并生成拆分后的 ModularIndexing 形式。

  • analyze_modular_expressionFloorDiv 类型项的转换:对于 add_terms 中的 FloorDiv 类型项,新增将其转换为 sympy.Mul(numerator, sympy.Pow(denominator, -1)) 的逻辑,确保后续系数提取能正确处理。

  • analyze_modular_expression 中成功拆分后重构表达式:当 FloorDiv 形式的子表达式经 analyze_floordiv_expression 判定可拆分后,重新构造 ModularIndexing(dividen_expression, lower=1, upper) 表达式并更新结果中的 details 字段。

  • 测试文件重构与新增用例:将测试类 TestUnifiedAxis 重命名为 TestLinearDynamic,新增 MockRangeNode 辅助类和 make_range_tree_nodes 工具函数,并补充了三个针对符号化表达式场景的测试方法(test_analyze_floordiv_expressiontest_analyze_modular_expressiontest_analyze_modular_expression_mod_is_symbol)。

likedislike
atomgit-bot
atomgit-bot
12 天前 评论:

代码审查

审查完成 — 关闭摘要

优先级 数量 说明
P0 1 TestUnifiedAxis 类名未同步更新,导入期 NameError
P2 1 analyze_modular_expression 在 FloorDiv 分析不可拆分时返回错误的 result type
P3 1 测试文件中未使用的 import
合计 3

已审查文件:

  • test/_inductor/test_linear_dynamic.py — 检出 P0(NameError)+ P3(未使用 import)
  • torch_npu/_inductor/codegen/ir.py — 检出 P2(result type 错乱)

总体风险:中高。 P0 问题会导致测试模块在导入期崩溃(CI 必现),建议优先修复。P2 问题在特定条件下触发(符号 lower 的 ModularIndexing 在 FloorDiv 拆分失败时),会返回 type 字段错误的 dict,可能误导下游消费者。其余为低风险的代码清理项。

类型 数量
🔴 阻塞 1
🟡 建议 1

⛔ 需要修改

likedislike
ascend-robotascend-robot成员
12 天前 添加了label:ascend-cla/yes
此处折叠了121条消息 查看更多
ascend-robotascend-robot成员
11 天前 添加了label:approved
ascend-robotascend-robot成员
11 天前 关闭了关联的issue
ascend-robotascend-robot成员
11 天前 合入了pull request
ascend-robot
ascend-robot成员
11 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
ascend-robot
ascend-robot成员
11 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13970 [ commitID:5db6c815 ] 已完成
likedislike