已合并
【fix】: 修复重复声明output/dim_a && 修复Reduce多同输入节点断图逻辑问题 && 断图后group按照依赖关系重新排序 #1736
WangYanMale创建于 16 天前
【fix】: 修复重复声明output/dim_a && 修复Reduce多同输入节点断图逻辑问题 && 断图后group按照依赖关系重新排序 #1736
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 WangYanMale 的贡献)16 天前 添加了label:enhancement
16 天前 创建了 pull request,commit 8c43b5b2
atomgit-bot
16 天前 评论:
16 天前 评论:
变更摘要
本次 PR 主要修复 codegen 生成重复 output 声明的问题:将跨循环 Tensor 收集的数据结构从「按轴维度聚合的调用列表」细化为「按轴维度、再按具体内层 Loop * 分组」,从而避免在生成循环体时对同一批 ApiCall 重复执行输出分配;同时将 control_dis_enable_cache_a 变量改为在 Loop::Generate 入口统一声明,避免循环内重复声明。
主要改动
CollectTensorCrossLoop接口与数据结构调整: 将入参类型由std::map<ascir::AxisId, std::vector<ApiCall *>>改为std::map<ascir::AxisId, std::map<Loop *, std::vector<ApiCall *>>>,并在收集时按body.loop作为内层键写入api_calls,使跨循环调用与具体循环一一对应。GenerateBody按具体循环过滤调用: 将target_calls改为cross_loop_map,在生成每个内层LoopType::LOOP时通过cross_loop_map.find(body.loop)仅对该循环关联的调用执行AllocOutputs和SyncOutputs,避免重复 output 声明。control_dis_enable_cache_a声明位置调整: 在Loop::Generate中当is_graph_has_reduce_node时统一声明bool control_dis_enable_cache_a = true;,原GenerateLoop内对该变量的bool声明改为赋值control_dis_enable_cache_a = true;,避免重复声明。- 头文件声明同步:
codegen_kernel_loop.h中CollectTensorCrossLoop的声明同步更新为新的std::map<ascir::AxisId, std::map<Loop *, std::vector<ApiCall *>>>签名。


atomgit-bot
16 天前 评论:
16 天前 评论:
16 天前 添加了label:cann-cla/yes
此处折叠了93条消息 查看更多
wangxiaotian995
13 天前 评论:
13 天前 评论:
/lgtm


13 天前 添加了label:lgtm
13 天前 添加了label:approved
13 天前 合入了pull request
Pull Request
描述
1、修复重复声明output/dim_a;
2、修复Reduce多同输入节点断图逻辑问题;
3、断图后group按照依赖关系重新排序。
变更类型
请选择本次引入的变更类型:
关联的Issue
NA
如何测试
构造reduce场景需要断图的结构,其断开的节点为多同输出节点(比如Mul的两个输入为同一个)。
核对清单
其他信息
NA