Agent知识梳理

从每日 PR 中梳理出的知识条目,按日期分开展示。

2026-09-18

8 条知识
scenario SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL #6154

OoOSchedule spill 后依赖图的增量重建约束

spill 改图后增量重建依赖图时,dirty 集必须覆盖所有被 spill 碰过的 op(新建 copyin/copyout、被删消费者、memId 被 remap 的 op)及其直接邻居、skip-op 链和同 program token 消费者,漏收 seed 会导致依赖边未被重算而产生静默调度错误。删 op 的图边清理必须收敛到单一 RemoveOp,保证 inGraph_/outGraph_ 两侧与 opConsumers/opProducers 同步更新,不得分散在多个只清单侧的函数中手工维护。

scenario SCENARIO-GRAPH-MERGE-VIEW-ASSEMBLE-TOKEN-MODE #6407

MergeViewAssemble 中 token 与 legacy 双模式的合并约束

MergeViewAssemble 在 token 模式下必须走完整 chain-share 合并并附带安全门(环检测、兄弟 producer 门、覆盖门、survivor 保留、token 迁移),legacy 模式保持旧语义(链在多 producer middle 处停止、带侧边消费者的中间张量存活),模式选择由 IRContext::GetAssembleNewLogicalTensor 决定。两种模式的安全门逻辑不得混用,链发现与合并操作追加必须分阶段执行以保证 groupFusion 已认领算子不被误删。

scenario SCENARIO-SUBGRAPH-MIX-CV-PATH #6451

MixDependencyAnalyzer 中 outcast 反向传播的 incast 条件跳过约束

MixDependencyAnalyzer 传播 outcast 依赖时,若 source leaf 的 allIncasts 非空(依赖已建立),必须整组跳过反向传播,仅无 incast 的 source 保留传播作为依赖锚点,否则已有 incast 的 leaf 冗余持有下游 outcast 导致 callOp 产生虚假写依赖。外部依赖传播必须拆为先完成 incast 正向传播再按条件反向传播 outcast 的两趟执行,保证判断基于 incast 传播完成后的最终状态。

boundary B-ISA-011 #6459

sub-byte dtype 的 32B 对齐计算必须按 BitsOf 而非 BytesOf 推导

对齐基(256bit / BitsOf)和末维字节数(ceil(lastDim × BitsOf / 8))必须按每 shape 元素的存储位数 BitsOf 统一推导,不得按打包存储字节 BytesOf 查表。sub-byte 类型(INT4/HF4/E2M1/E1M2,两个元素共享一字节)按 BytesOf 计算会导致对齐基减半(32 元素仅 16B)和末维字节数 2 倍高估,pad 后仍非 32B 对齐,触发 TLOAD/TSTORE 硬件对齐异常。

scenario SCENARIO-SUBGRAPH-MIX-CV-PATH #6466

MixDependencyAnalyzer 中 outcast 反向传播的 incast 条件跳过约束

MixDependencyAnalyzer 传播 outcast 依赖时,若 source leaf 的 allIncasts 非空(依赖已建立),必须整组跳过反向传播,仅无 incast 的 source 保留传播作为依赖锚点,否则已有 incast 的 leaf 冗余持有下游 outcast 导致 callOp 产生虚假写依赖。外部依赖传播必须拆为先完成 incast 正向传播再按条件反向传播 outcast 的两趟执行,保证判断基于 incast 传播完成后的最终状态。

scenario SCENARIO-TESTING-EVIDENCE-HARNESS #6475

Pass 函数签名变更后 UT 调用点必须同步更新的约束

Pass 内部函数签名变更时,所有 UT 调用点必须同步更新为新签名,交叉合入(两笔 PR 各自过 CI 但合并后签名不一致)会导致 UT 编译失败。UT 必须与生产代码的唯一调用点保持签名一致,不得残留旧签名的调用。

boundary B-ISA-011 #6483

sub-byte dtype 的 32B 对齐计算必须按 BitsOf 而非 BytesOf 推导

对齐基(256bit / BitsOf)和末维字节数(ceil(lastDim × BitsOf / 8))必须按每 shape 元素的存储位数 BitsOf 统一推导,不得按打包存储字节 BytesOf 查表。sub-byte 类型(INT4/HF4/E2M1/E1M2,两个元素共享一字节)按 BytesOf 计算会导致对齐基减半(32 元素仅 16B)和末维字节数 2 倍高估,pad 后仍非 32B 对齐,触发 TLOAD/TSTORE 硬件对齐异常。

scenario SCENARIO-GRAPH-MERGE-VIEW-ASSEMBLE-TOKEN-MODE #6492

MergeViewAssemble 中 token 与 legacy 双模式的合并约束

MergeViewAssemble 在 token 模式下必须走完整 chain-share 合并并附带安全门(环检测、兄弟 producer 门、覆盖门、survivor 保留、token 迁移),legacy 模式保持旧语义(链在多 producer middle 处停止、带侧边消费者的中间张量存活),模式选择由 IRContext::GetAssembleNewLogicalTensor 决定。两种模式的安全门逻辑不得混用,链发现与合并操作追加必须分阶段执行以保证 groupFusion 已认领算子不被误删。

2026-09-17

6 条知识
boundary B-ISA-011 #6404

pto-isa copyout 5 维上限对 SplitLargeFanoutTensor 拆分的 ISA 边界

pto-isa 仅支持不超过 5 维 tensor 的 copyout;SplitLargeFanoutTensor 在 assemble=>view 大 tensor 上拆分前必须校验 tensor 维度,超过 5 维的场景必须跳过拆分。否则拆分后一个 6 维 tensor 对应多个 assemble,后续必然产生不被设备支持的 6 维 copyout。

boundary B-SYNC-003 #6408

DAV_3510/lite 上 AIV 同步跳过仅限 PIPE_V→PIPE_V 的同步边界

为 VF 融合在 DAV_3510/lite 上跳过 AIV 同步时,跳过条件必须同时校验 set/wait 端均为 PIPE_V;MTE3 等其他同流水(如 assemble COPY_OUT)数据依赖必须正常生成 OP_BAR_M。否则并发写同一 GM tensor 无同步保护会导致精度偶现失败。

boundary B-SYNC-003 #6410

DAV_3510/lite 上 AIV 同步跳过仅限 PIPE_V→PIPE_V 的同步边界

为 VF 融合在 DAV_3510/lite 上跳过 AIV 同步时,跳过条件必须同时校验 set/wait 端均为 PIPE_V;MTE3 等其他同流水(如 assemble COPY_OUT)数据依赖必须正常生成 OP_BAR_M。否则并发写同一 GM tensor 无同步保护会导致精度偶现失败。

boundary B-ISA-011 #6414

pto-isa copyout 5 维上限对 SplitLargeFanoutTensor 拆分的 ISA 边界

pto-isa 仅支持不超过 5 维 tensor 的 copyout;SplitLargeFanoutTensor 在 assemble=>view 大 tensor 上拆分前必须校验 tensor 维度,超过 5 维的场景必须跳过拆分。否则拆分后一个 6 维 tensor 对应多个 assemble,后续必然产生不被设备支持的 6 维 copyout。

scenario SCENARIO-PASS-ASSIGN-MEMORY-TYPE-HELPER-EXTRACT #6430

AssignMemoryType 两版本提取公共 helper 到 MemoryPathUtils 的重构约束

在 slice-on/slice-off 两套 AssignMemoryType 实现间提取公共 helper 到 MemoryPathUtils 时,必须只移动两版本完全一致的代码且不改变任何运行逻辑;拆分超长编译单元须按主题归类,不得引入隐式依赖。否则两版本内存类型决策行为分叉或编译单元边界破坏可维护性。

scenario SCENARIO-PASS-ASSIGN-MEMORY-TYPE-HELPER-EXTRACT #6431

AssignMemoryType 两版本提取公共 helper 到 MemoryPathUtils 的重构约束

在 slice-on/slice-off 两套 AssignMemoryType 实现间提取公共 helper 到 MemoryPathUtils 时,必须只移动两版本完全一致的代码且不改变任何运行逻辑;拆分超长编译单元须按主题归类,不得引入隐式依赖。否则两版本内存类型决策行为分叉或编译单元边界破坏可维护性。

2026-09-16

9 条知识
scenario SCENARIO-SCHEDULE-OOO-VF-SCOPE-GATE #6118

OoOSchedule 中 VF scope 关闸延迟与 copyout 定位约束

VF scope 首个 op 即将关闸时必须延迟关闸以优先排空 MTE2/MTE3 上的搬运 op,且 copyout 的生产 anchor 属于 VF scope 时 execOrder 必须重定位到 scope 静态末 op 之后。闸门拒绝队首时须用 PopAllowing 向后扫描可发射 op 而非跳过整条队列,否则破坏 VF 连续流或导致搬运 op 无法及时发射。

scenario SCENARIO-SUBGRAPH-REDUCE-COPY-LOOP-CARRY-GATE #6323

ReduceCopyMerge 中 noMerge 放宽与 loop-carry 逐对校验门控约束

ReduceCopyMerge 不得将 reshape-only 子图一刀切打入 noMerge(跨子图风险须由 MarkCrossSubgraph 独立标记),loop-carry 路径混杂时须逐对校验——共环放行、跨环(非空不相交)拒绝以防独立 loop body 被误融合破坏 slot-scope 循环体完整性。hinge guard 须区分轻量纯 V 扇入与含 cube 的实质并行分支,不得无差别拦截前者。

scenario SCENARIO-SCHEDULE-SPILL-SKIP-CHAIN #6347

Spill L1 时穿越 reshape/view skip chain 的上溯与算子守恒约束

Spill L1 buffer 时 copyout 上溯必须穿过 reshape/view/viewType 等 skip op(纯 alias、无调度信息)走到真实 UB 源,且 InsertSpillCopyoutOp 须将 skip 链按拓扑序补进 newOperations。否则 copyout 拿不到合法锚点且 skip 链丢失会破坏 ScheduleBy 算子数守恒(newList.size == operations_.size)导致 assert 崩溃。

boundary B-PLAT-002 #6350

A3 平台 UB2L1 Slice 路径不可用的平台内存边界

在 A3 平台上 AssignMemoryType 不得生成 UB2L1 的 Slice;Reshape 后若存在 L1 Slice 消费者,必须降级为 GM Reshape 使消费方走 DDR 路径。A5 平台该路径可用,故内存类型决策须显式检查平台标识。

scenario SCENARIO-SCHEDULE-OOO-VF-SCOPE-GATE #6359

OoOSchedule 中 VF scope 关闸延迟与 copyout 定位约束

VF scope 首个 op 即将关闸时必须延迟关闸以优先排空 MTE2/MTE3 上的搬运 op,且 copyout 的生产 anchor 属于 VF scope 时 execOrder 必须重定位到 scope 静态末 op 之后。闸门拒绝队首时须用 PopAllowing 向后扫描可发射 op 而非跳过整条队列,否则破坏 VF 连续流或导致搬运 op 无法及时发射。

boundary B-MEM-004 #6366

UB slice 32B 非对齐时必须物化到 DDR 的内存对齐边界

FallbackSameMemoryMoveOps 将 SLICE 改写为 VIEW 前必须检查 UB 子切片地址的 32B 对齐条件;非对齐时 ResolveUnalignedUbSlices 须将消费者输入设为 DDR 由 ConvertInserter 插入独立搬入搬出,不得以 VIEW 共享 UB buffer。否则非对齐地址进入共享 UB 被 VEC 指令访问会触发硬件对齐异常(此约束扩展 B-MEM-004 至 SLICE→VIEW 改写路径)。

scenario SCENARIO-SCHEDULE-SPILL-SKIP-CHAIN #6378

Spill L1 时穿越 reshape/view skip chain 的上溯与算子守恒约束

Spill L1 buffer 时 copyout 上溯必须穿过 reshape/view/viewType 等 skip op(纯 alias、无调度信息)走到真实 UB 源,且 InsertSpillCopyoutOp 须将 skip 链按拓扑序补进 newOperations。否则 copyout 拿不到合法锚点且 skip 链丢失会破坏 ScheduleBy 算子数守恒(newList.size == operations_.size)导致 assert 崩溃。

boundary B-PLAT-002 #6381

A3 平台 UB2L1 Slice 路径不可用的平台内存边界

在 A3 平台上 AssignMemoryType 不得生成 UB2L1 的 Slice;Reshape 后若存在 L1 Slice 消费者,必须降级为 GM Reshape 使消费方走 DDR 路径。A5 平台该路径可用,故内存类型决策须显式检查平台标识。

scenario SCENARIO-SUBGRAPH-REDUCE-COPY-LOOP-CARRY-GATE #6402

ReduceCopyMerge 中 noMerge 放宽与 loop-carry 逐对校验门控约束

ReduceCopyMerge 不得将 reshape-only 子图一刀切打入 noMerge(跨子图风险须由 MarkCrossSubgraph 独立标记),loop-carry 路径混杂时须逐对校验——共环放行、跨环(非空不相交)拒绝以防独立 loop body 被误融合破坏 slot-scope 循环体完整性。hinge guard 须区分轻量纯 V 扇入与含 cube 的实质并行分支,不得无差别拦截前者。

2026-09-15

10 条知识
scenario SCENARIO-SUBGRAPH-MIX-SINK-MERGE-GATE #6132

ReduceCopy 中汇聚 sink 合并的串行损失门控

MixGraphMerger 合并汇聚 sink 候选组时必须推迟到常规合并收敛后的 sink 尝试轮,且仅在串行化损失 (Σbranch − max) 未超过 kSerialLossRatio × 合入 root 总 latency 时放行;否则应拒绝合并以避免为省边界通信付出远超 root 可消化的并行性损失。纯汇合点 (rootLatency=0) 的任何串行损失均须拒绝。

scenario SCENARIO-PASS-SLICE-CONTRACT-MATMUL-FOLD #6139

RemoveRedundantOp 中 slice-contract-slice 链经 matmul 结果时的折叠条件

当 slice-contract-slice 链的 contract 输入来自物化的 matmul 结果时,只要 L0C copy-out contract 留在链外且后续 rewrite 仅读取线性内存 tensor (sourceTensor/contractInput),即可安全折叠前导 slice 为 view;不得因 matmul backing 而一律拒绝折叠。

principle P-COPYIN-VIEW-OFFSET-ABSORPTION #6232

copyIn fromOffset 吸收 view 偏移后跨 Pass 不得重复叠加

当 Pass 将 view 窗口偏移吸收进 DDR copyIn 的 fromOffset(绝对量,codegen 仅使用 fromOffset)时,必须打标标记 (COPY_IN_VIEW_OFFSET_ABSORBED) 并保证下游 Pass 不再叠加 view 偏移;否则会导致搬运地址重复累加产生错误数据搬移。同时 view-copyin 折叠仅在 view 输入的静态和符号 offset 全为零时才安全。

boundary B-DYN-005 #6257

动态 shape tensor 必须分配 DDR 的内存能力边界

输出 shape 含 -1(动态维度)的 tensor 无法作为片上本地 buffer 静态分配,AssignMemoryType 必须将其强制分配 DDR;slice-contract 升级路径中 middle tensor 含动态维度时同样不得升级为本地 scratch。OoO DependencyManager 必须跳过未注册的 producer 以避免悬空依赖。

scenario SCENARIO-PASS-NAMED-CONSTANT-RETURN-CHECK #6260

Pass 层魔法数命名常量化与返回值即时检查的维护场景

修改 Pass 代码时,所有平台相关或语义相关的字面量必须替换为命名的 constexpr 常量(参见 C-SRC-008),辅助函数返回值必须即时检查并传播(参见 C-SRC-011);漏改会导致新平台适配遗漏或错误前提下的图结构污染。

boundary B-DYN-005 #6262

动态 shape tensor 必须分配 DDR 的内存能力边界

输出 shape 含 -1(动态维度)的 tensor 无法作为片上本地 buffer 静态分配,AssignMemoryType 必须将其强制分配 DDR;slice-contract 升级路径中 middle tensor 含动态维度时同样不得升级为本地 scratch。OoO DependencyManager 必须跳过未注册的 producer 以避免悬空依赖。

boundary B-MEM-004 #6283

UB slice fromOffset 未对齐时必须回退 DDR 的内存边界

当 SLICE 的输入和输出均为 UB 且 fromOffset 不满足 32 字节对齐时,AssignMemoryType 必须将输入强制分配 DDR,使向量消费方获得独立对齐的 buffer;否则共享 UB buffer 的非对齐 view 会导致 TLOAD/TSTORE 硬件对齐异常。

scenario SCENARIO-PASS-NAMED-CONSTANT-RETURN-CHECK #6291

Pass 层魔法数命名常量化与返回值即时检查的维护场景

修改 Pass 代码时,所有平台相关或语义相关的字面量必须替换为命名的 constexpr 常量(参见 C-SRC-008),辅助函数返回值必须即时检查并传播(参见 C-SRC-011);漏改会导致新平台适配遗漏或错误前提下的图结构污染。

scenario SCENARIO-SUBGRAPH-MIX-SINK-MERGE-GATE #6292

ReduceCopy 中汇聚 sink 合并的串行损失门控

MixGraphMerger 合并汇聚 sink 候选组时必须推迟到常规合并收敛后的 sink 尝试轮,且仅在串行化损失 (Σbranch − max) 未超过 kSerialLossRatio × 合入 root 总 latency 时放行;否则应拒绝合并以避免为省边界通信付出远超 root 可消化的并行性损失。纯汇合点 (rootLatency=0) 的任何串行损失均须拒绝。

principle P-COPYIN-VIEW-OFFSET-ABSORPTION #6344

copyIn fromOffset 吸收 view 偏移后跨 Pass 不得重复叠加

当 Pass 将 view 窗口偏移吸收进 DDR copyIn 的 fromOffset(绝对量,codegen 仅使用 fromOffset)时,必须打标标记 (COPY_IN_VIEW_OFFSET_ABSORBED) 并保证下游 Pass 不再叠加 view 偏移;否则会导致搬运地址重复累加产生错误数据搬移。同时 view-copyin 折叠仅在 view 输入的静态和符号 offset 全为零时才安全。

2026-09-14

1 条知识
principle P-ALIAS-VIEW-EXPAND-REMOVE-COHERENCE #6228

别名 VIEW 在展开与冗余删除阶段的一致识别

Slice 模式下,依赖消费者特定约束的别名 VIEW(如 GatherInUB params 需 DDR 直读、ReduceAcc 消费的 VIEW 动态有效形状仅差无效 RUNTIME_Max 截断)必须在 ExpandFunction 展开阶段保留穿透语义、并在 RemoveRedundantOp 删除阶段按消费者约束放宽等价判定,二者构成跨 Pass 的一致识别闭包。若展开阶段误将穿透别名 VIEW 按 tile 网格展开,或删除阶段未能识别仅差无效截断的等价 VIEW,将导致图规模爆炸或残留无效搬运。

2026-09-12

5 条知识
scenario SCENARIO-PLATFORM-DISCOVERY-PROFILE-CAPABILITY-SNAPSHOT #6063

平台配置概念规范化与 profile 身份一致性约束

平台配置概念(soc_series、soc_version、NPU_ARCH)的规范化必须使 DPlatform 枚举、INI profile 身份和安装资源形成闭合一致链路;精简或新增 profile 时必须同步更新枚举映射、parser 安装列表和全部下游 capability 消费方。

principle P-DYN-SHAPE-COMPARISON-NORMALIZATION #6064

跨 Pass 动态形状比较的表达式归一化

跨 Pass 阶段比较动态有效形状时,必须先归一化剥离运行时截断表达式(如 RUNTIME_Max(expr, 0))再进行比较;若未归一化,携带截断的冗余 VIEW 将无法被下游清理 Pass 识别和删除,导致图规模膨胀或残留无效操作。

scenario SCENARIO-ADD-OR-EXTEND-OPERATOR #6162

算子语义拆分时 dynValidShape 白名单的同步约束

当算子语义被拆分或重组时,所有引用原算子的手工白名单(如 dynValidShape 强制更新列表)必须同步更新以包含新算子;否则新算子的输出将保留从输入继承的陈旧动态有效形状,在 enable_slice 或动态尾块场景下导致错算。

scenario SCENARIO-ADD-OR-EXTEND-OPERATOR #6205

算子语义拆分时 dynValidShape 白名单的同步约束

当算子语义被拆分或重组时,所有引用原算子的手工白名单(如 dynValidShape 强制更新列表)必须同步更新以包含新算子;否则新算子的输出将保留从输入继承的陈旧动态有效形状,在 enable_slice 或动态尾块场景下导致错算。

scenario SCENARIO-PLATFORM-DISCOVERY-PROFILE-CAPABILITY-SNAPSHOT #6227

平台配置概念规范化与 profile 身份一致性约束

平台配置概念(soc_series、soc_version、NPU_ARCH)的规范化必须使 DPlatform 枚举、INI profile 身份和安装资源形成闭合一致链路;精简或新增 profile 时必须同步更新枚举映射、parser 安装列表和全部下游 capability 消费方。

2026-09-11

4 条知识
boundary B-ISA-011 #6130

PTO ISA copy 指令的维度上限边界

Pass 插入 copy in/out 或隔离共享 assemble 输入时,输入 shape 维度不得超过 PTO ISA 的 copy 维度上限(5 维),超出时必须 skip 并告警,不能生成超维度 copy 指令。PreGraph 中 assemble 未删除时仍须 push assemble offset 到 CopyOut,不能跳过 offset 同步导致消费者观测到错误偏移。

boundary B-ISA-011 #6138

PTO ISA copy 指令的维度上限边界

Pass 插入 copy in/out 或隔离共享 assemble 输入时,输入 shape 维度不得超过 PTO ISA 的 copy 维度上限(5 维),超出时必须 skip 并告警,不能生成超维度 copy 指令。PreGraph 中 assemble 未删除时仍须 push assemble offset 到 CopyOut,不能跳过 offset 同步导致消费者观测到错误偏移。

scenario SCENARIO-FRONTEND-PASS-API-DOC-MAINTENANCE #6143

Pass 调试与配置 API 文档与实际行为的一致性约束

Pass 调试与配置 API(set_pass_default_config、pass_verify_print、pass_verify_save)的文档必须与实际参数类型、使能方式和行为保持一致。文档中的参数类型(如 Union[str, SymbolicScalar, int])、使能条件(如 @pypto.frontend.jit 装饰器)和术语命名必须随实现同步更新。

scenario SCENARIO-PASS-MERGE-VIEW-ASSEMBLE-TOKEN-FANOUT #6161

MergeViewAssemble 扇出场景下 token 依赖的约束

MergeViewAssemble 合并扇出场景下的 assemble 链时,每个 merged op 必须创建独立新 token 接管旧 result token 的外部消费者,不能复用旧 token。旧 result token 的 varDependency 须保留至 CleanupLegacyResultTokens 统一移除,避免多条合并链共享同一 producer token 时出现多生产者冲突。

2026-09-10

12 条知识
scenario SCENARIO-SUBGRAPH-MIX-CV-PATH #6049

ReduceCopyMerge 自动合并的时延护栏与 loop-carry 通路一致性约束

ReduceCopyMerge 自动合并必须设置合并组工作量上限并校验候选组 loop-carry 通路归属完全一致;若 feedback slot 构成的串行 carry 环与环外并行分支被融进同一合并组,将抹掉多核并行度。需扩展 SCENARIO-SUBGRAPH-MIX-CV-PATH 以覆盖 automix merge 的时延护栏与 loop-carry 通路门控约束。

principle P-GETTENSORDATA-VALUE-DEPENDENCY-PRESERVATION #6052

GetTensorData 运行时标量值依赖必须跨函数切分与视图折叠完整保持

当运行时标量(RUNTIME_GetTensorData* 符号表达式)作为核内 view 动态偏移或 validshape 时,该值依赖必须贯穿 SubgraphToFunction 切分、MixSubgraphSplit 子函数 I/O 重导和 RemoveUnalignedReshape 视图折叠三个环节完整保持;任一环节丢失 TensorExtract incast 或残留旧作用域引用将导致精度错误或全零输出。

scenario SCENARIO-PASS-UTILITIES-STATISTICS-DEBUG-CONTRACTS #6062

MergeViewAssemble 中扇出场景的 token 接管与清理约束

MergeViewAssemble 合并 op 时必须为每条合并链创建新 token 接管旧 result token 的全部外部消费者,不能复用旧 token;扇出场景下每条链各产一个新 token,合并完成后必须统一清理遗留旧 token,否则消费者等待已失效 token 导致依赖断裂。需扩展 SCENARIO-PASS-UTILITIES-STATISTICS-DEBUG-CONTRACTS 以覆盖扇出 token 接管与清理。

scenario SCENARIO-PASS-UTILITIES-STATISTICS-DEBUG-CONTRACTS #6065

MergeViewAssemble 链合并中旁路消费者与扇出保留约束

MergeViewAssemble 在无 token 函数中执行链合并时必须保留旁路消费者所需的中间写入,仅删除被合并替代的链尾;含 token 的函数必须继续使用现有限制。需扩展 SCENARIO-PASS-UTILITIES-STATISTICS-DEBUG-CONTRACTS 以覆盖无 token 函数的分支合并恢复与旁路依赖保留。

scenario SCENARIO-PASS-GRAPH-CONSTRAINT-OPTIMIZATION-CHECKER #6070

RemoveRedundantOp 中 slice-contract-slice 链折叠的安全性约束

RemoveRedundantOp 的 ProcessSliceContractSlice 折叠 slice-contract 前缀时,若 L0C copy-out contract 留在链外且每次重写只读取线性内存 tensor,则折叠对单扇出和混合扇出消费者均安全;以 matmul 结果 materialized 为由跳过折叠会保留冗余输出写入链。需扩展 SCENARIO-PASS-GRAPH-CONSTRAINT-OPTIMIZATION-CHECKER 以覆盖 slice-contract-slice 折叠条件。

boundary B-MEM-004 #6072

AssignMemoryType 中 Assemble 输出内存类型的消费者全一致性约束

AssignMemoryType 将 Assemble 输出 Tensor 的内存类型设为 L1 时,必须保证该 Tensor 的所有消费者 op 均为 L1 View;若存在非 L1 View 的消费者,将导致 L1→DDR CopyOut 的 TStore 指令收到不支持的 L1 输入,触发硬件异常或静默数据错误。

scenario SCENARIO-PASS-MERGE-DANGLING-ASSEMBLE-OUTPUT #6092

MergeDanglingAssembleOutput 中非 assemble 输出冗余 tensor 的合并约束

MergeDanglingAssembleOutput 合并冗余输出 tensor 时必须覆盖非 assemble 类型的输出;若仅合并 assemble 输出而跳过非 assemble 冗余 tensor,将导致冗余中间写入保留到后续 Pass,影响内存通路选择或触发下游检查失败。

scenario SCENARIO-CONFIGURATION-PASS-DOC-MESSAGE #6106

Pass 配置与验证 API 文档的准确性约束

Pass 配置(set_pass_default_config)与验证(pass_verify_print/save)的 API 文档必须与实际接口签名和行为一致;不确定性:此 PR 仅修改文档不涉及代码逻辑,归类为 scenarios/configuration 仅为占位。

principle P-SCHEDULING-LIFETIME-COHERENCE #6114

调度、依赖和内存生命周期必须联合推导

OoO 调度的任务切分和 spill 必须在数据边之外显式连接 token 依赖边并在回载后按写写冲突补序;缺少 token 边会导致任务乱序或 spill WAR 冲突。需扩展 P-SCHEDULING-LIFETIME-COHERENCE 以覆盖 task splitting 与 spill 两阶段的 token 边要求。

scenario SCENARIO-SUBGRAPH-MIX-CV-PATH #6117

ReduceCopyMerge 自动合并的时延护栏与 loop-carry 通路一致性约束

ReduceCopyMerge 自动合并必须设置合并组工作量上限并校验候选组 loop-carry 通路归属完全一致;若 feedback slot 构成的串行 carry 环与环外并行分支被融进同一合并组,将抹掉多核并行度。需扩展 SCENARIO-SUBGRAPH-MIX-CV-PATH 以覆盖 automix merge 的时延护栏与 loop-carry 通路门控约束。

principle P-GETTENSORDATA-VALUE-DEPENDENCY-PRESERVATION #6121

GetTensorData 运行时标量值依赖必须跨函数切分与视图折叠完整保持

当运行时标量(RUNTIME_GetTensorData* 符号表达式)作为核内 view 动态偏移或 validshape 时,该值依赖必须贯穿 SubgraphToFunction 切分、MixSubgraphSplit 子函数 I/O 重导和 RemoveUnalignedReshape 视图折叠三个环节完整保持;任一环节丢失 TensorExtract incast 或残留旧作用域引用将导致精度错误或全零输出。

boundary B-MEM-004 #6131

AssignMemoryType 中 Assemble 输出内存类型的消费者全一致性约束

AssignMemoryType 将 Assemble 输出 Tensor 的内存类型设为 L1 时,必须保证该 Tensor 的所有消费者 op 均为 L1 View;若存在非 L1 View 的消费者,将导致 L1→DDR CopyOut 的 TStore 指令收到不支持的 L1 输入,触发硬件异常或静默数据错误。

2026-09-09

7 条知识
scenario SCENARIO-PASS-MERGE-DANGLING-VERSION-PRODUCER #6026

MergeDanglingAssembleOutput 中 dangling version 合并的算子无关约束

MergeDanglingAssembleOutput 合并共享同一 base tensor 的 dangling version 时必须覆盖所有产生 version 输出的算子类型而非仅 OP_ASSEMBLE;非 assemble 生产者(如 ATOMIC_RMW)的 dangling version 若被排除,冗余 tensor 将残留未合并。

scenario SCENARIO-PASS-PRODUCER-GROUP-FUSION-OPCODE #6048

ProducerGroupFusion 替换算子必须从下游消费者推导

ProducerGroupFusion 将 N 个扇入重写为直接写下游输出时,CONTRACT 与 ASSEMBLE 同属 assemble-like 可参与合并,替换算子必须由 GetMergedAssembleOpcode 按生产者-下游配对推导而非硬编码 OP_ASSEMBLE;混合 opcode 生产者须按配对分别推导,否则下游为 CONTRACT 时丢失 CONTRACT 语义并破坏 pass_infermemory_in_output。该 PR 扩展 SCENARIO-PASS-PRODUCER-GROUP-FUSION-OPCODE 关于 CONTRACT assemble-like 合并的约束。

boundary B-PLAT-001 #6055

ReduceCopy 需要平台支持 CV mix graph

auto_mix_partition 默认开启后,ReduceCopy 在不支持 CV mix graph 的平台上仍必须显式 skip;当图中存在用户手动 scope(cvFuseId >= 0)时,auto-mix 必须对该 scope 跳过自动合并由 enforce 路径处理,不得改变手动 scope 的切分结果。该 PR 启用 auto_mix_partition 默认值并扩展 B-PLAT-001 关于 hasScopedOp 门控的约束。

boundary B-DYN-005 #6080

assume_divisible 用户断言的跨组件传播与 DualDst 静态化边界

用户通过 assume_divisible 声明运行时表达式可被 tile 整除后,编译器必须从前端经接口、IR、Pass 到 codegen 全链路正确传播该断言以证明 validShape 为完整 tile 静态值;若断言为假或传播中断,DualDst 融合将基于错误等价性生成非法双写指令。该 PR 扩展 B-DYN-005 在 DualDstEngine 与 InferDynShape 中 validShape 静态化的实现。

boundary B-ISA-011 #6089

VEC 指令 UB 操作数 32B 对齐与 contract/slice 对消防护

RemoveRedundantOp 在执行 contract+slice 对消改写及 L1 fanout 折叠前,必须检查生成的视图 fromOffset 与 mergedOffset 在连续布局线性化后是否满足 VEC 指令的 32B 对齐要求;非对齐时必须保留 CONTRACT+SLICE 拷贝路径或不折叠 precedingSlice,否则 VEC consumer 会产生非对齐访问并触发 aicore errcode 0x800。该 PR 扩展 B-ISA-011 在 L1 fold 与 composed offset 对齐检查方面的约束。

boundary B-PLAT-001 #6105

ReduceCopy 需要平台支持 CV mix graph

auto_mix_partition 默认值回退为 0 后,hasScopedOp 门控(cvFuseId >= 0 时跳过 auto-mix)仍必须保留;当手动 scope 存在时 auto-mix 不得改变其切分结果。该 PR 将 auto_mix_partition 默认值回退为 0,扩展 B-PLAT-001 关于默认值回退与门控保留的约束。

boundary B-PLAT-001 #6109

ReduceCopy 需要平台支持 CV mix graph

auto_mix_partition 默认值回退为 0 后,hasScopedOp 门控仍必须保留;当手动 scope 存在时 auto-mix 不得改变其切分结果。该 PR 扩展 B-PLAT-001 关于默认值回退的约束。

2026-09-08

9 条知识
boundary B-DYN-005 #5527

assume_divisible 用户断言的跨组件传播与 DualDst 静态化边界

用户通过 assume_divisible 声明运行时表达式可被 tile 整除后,编译器必须从前端经接口、IR、Pass 到 codegen 全链路正确传播该断言以证明 validShape 为完整 tile 静态值;若断言为假或传播中断,DualDst 融合将基于错误等价性生成非法双写指令。

principle P-OUTCAST-CORE-COHERENCE #5866

共享同一 outcast 的 INDEX_OUTCAST 算子必须共核调度

TaskSplitter 必须将操作同一 outcast tensor 的 INDEX_OUTCAST 算子 union 到同一 cluster,保证 CoreScheduler 分配到同一 AIV 核;否则 InsertSync 会检测到 AIV0↔AIV1 跨核同步并拒绝编译,且 InjectWaitFlag 的错误不得被静默吞掉。

scenario SCENARIO-PASS-PRODUCER-GROUP-FUSION-OPCODE #5944

ProducerGroupFusion 替换算子必须从下游消费者推导

ProducerGroupFusion 将 N 个 ASSEMBLE 扇入重写为直接写下游输出时,替换算子必须由 GetMergedAssembleOpcode 从下游消费者类型推导,不能硬编码为 OP_ASSEMBLE;否则当下游为 CONTRACT 时会丢失 CONTRACT 语义并破坏 pass_infermemory_in_output。

principle P-SCHEDULING-LIFETIME-COHERENCE #5975

调度、依赖和内存生命周期必须联合推导

OoO 调度的任务切分图必须包含 token 依赖边而非仅数据边,SpillEngine 回载后必须补插 token 序边,删除或替换算子时必须转移 token 所有权;缺少任一环节会导致执行顺序违反 token 约束。该 PR 扩展 P-SCHEDULING-LIFETIME-COHERENCE 在 OoO token 依赖方面的具体实现。

scenario SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL #5976

核、流水线、同步与 Spill 调度约束

Spill 镜像 tensor 的 rawshape 必须由单一参照张量推导而非逐维取大,因为候选张量可能处于不同坐标系(ND vs NZ)导致取大结果不属于任何一方;镜像 offset 也必须从参照张量在新 workspace 中的语义位置推导而非从原地址复制。该 PR 扩展 SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL 中 SCHED-018 的 spill 镜像形状约束。

boundary B-ISA-011 #5977

VEC 指令 UB 操作数 32B 对齐与 contract/slice 对消防护

RemoveRedundantOp 在执行 contract+slice 对消改写前,必须检查生成的视图 fromOffset 在连续布局线性化后是否满足 VEC 指令的 32B 对齐要求;非对齐时必须保留 CONTRACT+SLICE 拷贝路径输出独立对齐 buffer,否则 VEC consumer 会产生非对齐访问并触发 aicore errcode 0x800。

boundary B-PLAT-001 #6017

ReduceCopy 需要平台支持 CV mix graph

auto_mix_partition 默认开启后,ReduceCopy 在不支持 CV mix graph 的平台上仍必须显式 skip;当图中存在用户手动 scope(cvFuseId >= 0)时,auto-mix 必须对该 scope 跳过自动合并由 enforce 路径处理,不得改变手动 scope 的切分结果。该 PR 扩展 B-PLAT-001 关于 auto_mix_partition 默认启用与 hasScopedOp 门控的约束。

scenario SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL #6051

核、流水线、同步与 Spill 调度约束

Spill 镜像 tensor 的 rawshape 必须由单一参照张量推导而非逐维取大,因为候选张量可能处于不同坐标系(ND vs NZ)导致取大结果不属于任何一方;镜像 offset 也必须从参照张量在新 workspace 中的语义位置推导而非从原地址复制。该 PR 扩展 SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL 中 SCHED-018 的 spill 镜像形状约束。

principle P-OUTCAST-CORE-COHERENCE #6054

共享同一 outcast 的 INDEX_OUTCAST 算子必须共核调度

TaskSplitter 必须将操作同一 outcast tensor 的 INDEX_OUTCAST 算子 union 到同一 cluster,保证 CoreScheduler 分配到同一 AIV 核;否则 InsertSync 会检测到 AIV0↔AIV1 跨核同步并拒绝编译,且 InjectWaitFlag 的错误不得被静默吞掉。

2026-09-05

1 条知识
principle P-VF-FUSION-CLUSTER-PIPELINE-COHERENCE #5943

VF fusion cluster 识别与下游 atomic-scope 消费 Pass 的 pipeline 一致性

在 PVC2_OOO pipeline 中,VFFusionClusterIdentify 必须在 SubgraphToFunction 之后注册并仅在 HLF 调度模式下产生 atomic scope cluster;InsertSync 和 LoopaxesProc 的 atomic-scope-aware 处理必须与 cluster producer 的 pipeline 存在性保持一致,不能通过独立 debug 开关脱节控制。若 cluster producer 未注册或被 skip 而消费端仍运行,或反之,则同步边界移动和循环轴分组将基于空或过时的 cluster 信息产生错误结果。

2026-09-04

6 条知识
scenario SCENARIO-SUBGRAPH-REDUCE-COPY-OP-NUM-LIMIT #5663

ReduceCopy 合并的 op 数量上限约束

ReduceCopy 合并子图时合并后子图的 AIC/AIV op 总数不得超过 maxSubgraphAICOpNum/maxSubgraphAIVOpNum 上限;常规合并不满足时必须拒绝,enforce 合并超限时仅告警不拦截以保留强制合并语义。

scenario SCENARIO-SCHEDULE-OOO-VF-AFFINITY #5752

OoOSchedule 中 VF 亲和性排序的约束

OoOSchedule 按 VF 亲和性排序时 VF cluster 内的 op(atomic_scope_id ≥ VF_CLUSTER_ID_START)必须在调度中按亲和性分组,且 VF_CLUSTER_ID_START 常量必须在 VF fusion cluster identify 与 OoOSchedule 间共享一致;排序错误会导致 VF cluster 内 buffer 分配与 spill 决策不一致。

boundary B-VF-002 #5849

VF fusion cluster 外部内存的 UB 容量边界

VF fusion 形成 cluster 时 cluster 的外部 tensor 总内存不得超过平台 UB 容量的设定比例阈值,超限时必须拒绝融合以防 UB 溢出;cube-task prefix 兼容性必须在合并前验证,不兼容的 prefix 子集不得合并。

principle P-VF-CLUSTER-DOWNSTREAM-INTEGRITY #5851

下游 Pass 处理 VF cluster op 时必须保持 cluster 边界完整性

下游 Pass 修改含 VF cluster op(atomic scope)的 op 列表时必须保持 cluster 边界完整性:InsertSync 必须将 sync op 正确重排到 cluster 边界前后且禁止不可移动 sync 穿越边界,LoopaxesProc 必须解析 cluster 内地址冲突并传播错误状态而非静默继续。

scenario SCENARIO-PASS-SLICE-CONTRACT-CHAIN-REMOVE #5853

RemoveRedundantOp 中 slice-contract-slice 链消除的约束

RemoveRedundantOp 识别 slice-contract-slice 链(前驱 SLICE → CONTRACT → 后继 SLICEs)时前后 slice 的 offset 必须可无溢出组合且组合后区域在源 tensor shape 范围内;仅严格单生产者单消费者且全部 slice 消费者的链才可消除,否则须留给通用 view/assemble 级联处理。

scenario SCENARIO-SUBGRAPH-REDUCE-COPY-SAME-SCOPE-EXEMPT #5920

ReduceCopy enforce merge 中同 scope 外部端点的豁免约束

ReduceCopy enforce merge 的 inner-tensor 检查中与组内端点共享同一有效 CvFuseId 的组外端点必须豁免(不计为外部使用),因为 scope 融合机制保证其终将同组;CvFuseId 为 -1 或不同 scope 的端点不得豁免,否则会吞掉 foreign endpoint 的拒绝条件。

2026-09-02

1 条知识
scenario SCENARIO-PASS-COE-HASH-EXCLUDE-MERGE-ATTRS #5793

CommonOperationEliminate 哈希中排除 graph-merge 属性的约束

CommonOperationEliminate 的操作等价性哈希必须排除 merge pass(L1CopyInReuse/CubeNBuffer/VecNBuffer)标注的 merge-group 标识属性(l1ReuseHashOrder/cubeMergeHashOrder/vecMergeHashOrder 及其 SubgraphCount),因为这些标识在同一合并子图的等价 producer 组间不同且不属于操作语义。若哈希包含这些属性,COE 将无法识别等价操作,导致公共操作消除失败和编译错误。

2026-09-01

3 条知识
principle P-PASS-STAGE-CONTRACT #5033

Pass 顺序和阶段转换是可执行契约

新增 Pass 到 pipeline 时必须声明其 required/produced properties 和依赖位置,不能仅插入到序列中;若 effective pipeline 中 BuildTreeFromReduce 未在 ProcessAtomic 之前执行,atomic→add 转换会因缺失前置 reduce tree 而静默失败。该改动同时触及 ProcessAtomic checker 不变量(boundaries)。

scenario SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL #5735

核、流水线、同步与 Spill 调度约束

重构 DualDst 分配调度逻辑时必须保持配对正确性、双核同址约束和改图闭包不变量不变;将分配逻辑从 post_schedule 迁移到 pre_schedule/core_assign 时,buffer pool、refcount、memId→Alloc 映射和 dependency 双侧必须同步更新。

principle P-MEMORY-DATA-PATH-END-TO-END #5790

内存语义变更必须贯通完整数据路径

新增 token 依赖概念时必须从 graph partition 到 memory assignment、codegen_preproc 和 insert_sync 完整贯通,不能仅在单一 Pass 引入而不更新全链路 consumer;否则会导致跨 Pass 状态不一致或 codegen 生成非法指令。该改动同时触及 Pass 阶段契约(新 pass 注册)和 codegen/sync 边界。

2026-08-31

4 条知识
principle P-VF-CLUSTER-ATOMICITY #5669

VF 融合 cluster 识别与跨 Pass 原子性保持的约束

当引入 VF 融合 cluster 识别 Pass 进入 pipeline 时,cluster 信息必须通过 persistent scope ID 持久化,且 OoO 调度、InsertSync、MixSubgraphSplit 等所有下游 Pass 必须保持 cluster 原子性不得拆分;任一 Pass 破坏 cluster 连续性将导致 VF 融合窗口丢失或生成非法融合指令。该约束仅在 DAV_3510(A5)且 ENABLE_VF 开启时生效,平台边界参见 B-VF-001。

scenario SCENARIO-PASS-HEADER-INLINE-STATE-PARSER-TEMPLATE-CONTRACTS #5771

AssignMemoryType 中 slice-contract 升级路径的多 consumer 约束

在 AssignMemoryType Pass 中扩展 L0C-to-L1 slice-contract 升级路径以支持多 consumer 时,必须验证所有 slice consumer 的 shape 保持一致且 single-contract pattern 合法;否则会导致内存数据路径分配错误或搬运语义被破坏。

principle P-CONTRACT-SLICE-REMOVAL-COHERENCE #5777

Contract slice 移除逻辑在共享 Pass 工具与多 Pass 间的一致性约束

当修改共享 pass_utils 中 contract slice 移除逻辑以适配 matmul 时,所有消费该工具的 Pass(ExpandFunction、RemoveRedundantAssemble)必须同步更新以保持一致的图变换行为;任一 Pass 未同步将导致 contract slice 被错误保留或移除,产生错误的计算图。

scenario SCENARIO-CORE-ERROR-LOGGING-CAST-TRACING #5807

Pass 模块日志准确性与测试覆盖的约束

当批量修正 Pass 模块日志的拼写、语法和文案时,必须保证日志描述与实际代码语义一致且不改变控制流;错误的日志描述会误导调试定位,日志整改不得触及逻辑分支或日志级别变更。

2026-08-29

2 条知识
principle P-VIEW-ASSEMBLE-SLICE-NORMALIZATION #5713

VIEW/ASSEMBLE 与 SLICE/CONTRACT 拷贝路径表示的归一化约束

当 EnableSlice 开启时,表示内存变换的 VIEW+ASSEMBLE 拷贝路径级联必须在 discontinuous-input 分析前归一化为 SLICE+CONTRACT,禁止同一拷贝路径在图中同时存在两种表示。VIEW 暴露源张量切片时,RemoveRedundantAssemble 的 raw shape 推导与 ReplaceTensor 的基张量选择必须按源轴映射保留源 raw shape,否则下游 Pass 生成与实际搬运语义不符的搬运偏移或维度。

scenario SCENARIO-SUBGRAPH-MERGE-INNER-EXTERNAL-USE #5769

ReduceCopyMerge enforce 合并路径的内用外传检查约束

ReduceCopyMerge 合并子图组时,enforce 合并路径与 auto 合并路径必须同样执行 CheckNoExternalUseOfMergedInnerTensor 检查,禁止合并后产生同时具有组内读写和组外端点的 boundary tensor。违反此约束会使 AllocWorkspaceGM 跳过 workspace 分配、codegen 回退到错误地址,导致精度错误。

2026-08-28

1 条知识
principle P-OUTCAST-ASSEMBLE-DEFERRED-EXPANSION #5711

Outcast ASSEMBLE 无 token 依赖时必须延迟展开至 RemoveRedundantOp

当 ASSEMBLE 输出为函数 outcast 且无 WAW/WAR token 依赖时,ExpandFunction 必须保持其视图语义不展开为 SLICE + CONTRACT,由 RemoveRedundantOp 在后续阶段完成转换。 携带 token 依赖的 ASSEMBLE 仍须在 ExpandFunction 中展开以传播同步语义,且 ExpandFunction 与 RemoveRedundantOp 之间插入的新 Pass 必须能处理未展开的 outcast ASSEMBLE,否则会导致冗余搬运或同步丢失。

2026-08-27

3 条知识
scenario SCENARIO-PASS-SCOPE-PROPAGATION-CONFLICT #5621

SuperNode 图中 VIEW/ASSEMBLE scope 传播的冲突检测约束

ASSEMBLE-like 算子从 producer 方向、VIEW-like 算子从 consumer 方向继承 scope 时,若主方向与副方向邻居存在多个公共 scope ID,必须返回 FAILED 而非静默选择任一 scope;否则导致图分区不确定或跨 scope 依赖错误。

scenario SCENARIO-TESTING-BUILD-PACKAGING-DIAGNOSTICS #5645

构建、打包、工具与离线诊断约束

build_ci.py 中 -u 选项的安装模式变更必须保持 whl 安装路径、PYTHONPATH 注入与测试发现逻辑的一致性;回退 run 包安装模式时必须用 whl 重装替换 site-packages 依赖,否则导致测试模块导入失败。此改动不涉及 Pass 逻辑,归入 scenarios-testing 为最接近类别。

scenario SCENARIO-PASS-COPY-ATTR-OUTPUT-SHAPE #5709

GenerateMoveOp 中 SetCopyAttr 的 output shape 约束

GenerateMoveOp 中 SetCopyAttr 构造 CopyOpAttribute 时必须使用 output operand shape 而非 input operand shape;A5 (DAV_3510) 平台 collapse TRANS_FORMAT_L1 消费者后也必须重新设置 CopyOpAttribute。违反此约束会导致搬运指令维度与实际 tensor 不匹配,引发性能回退。

2026-08-26

3 条知识
scenario SCENARIO-SUBGRAPH-MIX-CV-PATH #5517

CopyInCombine 排除 UB→UB 转置以避免 isCube 污染下游 core 判定的约束

CopyInCombine 不得将 UB→UB 的 MOVE_LOCAL 算子(如 OP_TRANSPOSE_VNCHWCONV)合入含 cube 算子的混合 supernode,否则组内 V 算子被无差别标记 isCube=true,使 AddAlloc 的 UB_ALLOC core type 与 TaskSplitter 的 SubgraphID 继承按错误 core 推导。该约束扩展 SCENARIO-SUBGRAPH-MIX-CV-PATH 的 MIX-CV-010:须在 CopyInCombine 源头排除会污染 isCube 的 UB→UB 转置,而非仅靠下游改读更精确元数据。

scenario SCENARIO-TENSOR-LARGE-FANOUT-MIXED-CONSUMER-UB-CHECK #5595

SplitLargeFanoutTensor 注册 mixed consumer 前的 UB 内存层级确认约束

SplitLargeFanoutTensor 在注册 mixed consumer 大张量前必须经 IsUbConfirmed 确认其 assemble 生产者的上游输入与 view 消费者的下游输出均落在 UB 内存层级,否则在非 UB 数据通路上执行 mixed consumer 拆分会产生与实际搬运语义不符的切分决策。漏掉该校验会使下游非 UB 算子被错误纳入 mixed consumer 拆分,破坏数据通路一致性。

boundary B-MEM-006 #5653

零 offset L0C2UB Assemble 折叠与 MIX 子图 UB_ALLOC 跨 leaf 传播边界

auto_mix_partition=1 下 L0C_COPY_UB 与 ASSEMBLE 合入同一 MIX 子图时,ReplaceTensor 必须折叠零 offset L0C2UB Assemble(切 copy 为 INSERT 直写、保留输出 tensor 身份后删节点并延迟到遍历结束统一清理 tombstone),否则残留 Assemble 会让 MixSubgraphSplit 把共享 mem_id 的 UB_ALLOC 拆到不同 leaf 而丢失 symbol(F6200E),该约束扩展 SCENARIO-PASS-REPLACE-TENSOR-ASSEMBLE-FOLD 的零 offset 折叠与 obsolete 节点删除场景。ProcessShapeTransportFallback 的片上直连路径还须校验穿透路径上 REGISTER_COPY 的 tensor shape 为端点 shape 整数倍(扩展 B-MEM-004),否则搬运粒度不一致须回退 DDR。

2026-08-25

2 条知识
scenario SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL #5502

OoO 调度中同层连接的跨核感知与全局排序约束

OoOSchedule 中 TaskSplitter 建立 same-layer connection 时必须按 core type (AIC/AIV) 过滤跨核连接,alloc op 必须从 task list 剔除后再调度,且非 Mix 路径必须先经 OptimizeSort 全局排序再划分 task。漏掉任一项会导致跨核依赖丢失、alloc 干扰 issue 顺序或 internal subgraph 划分错误。

principle P-MEMORY-DATA-PATH-END-TO-END #5538

ReduceCopyMerge 对 boundary tensor 的 DDR 预判必须与 IntraSubgraphAdapter 的实际 materialization 一致

ReduceCopyMerge 判定 boundary tensor 的 isDDR 时必须预判 IntraSubgraphAdapter 是否会在不插新搬运 op 的情况下直接 DDR 化该 tensor(按 producer 的 ASSEMBLE/COPY_OUT/跨核 move 分类),并使该预判与 adapter 实际行为共享同一 IsCrossCoreMoveOp 判定。预判与实际不一致时 inner-external-use 检查会被错误跳过或施加,导致子图错误合并或 boundary tensor 被无声 DDR 化而缺失 ASSEMBLE 隔离。

2026-08-24

2 条知识
scenario SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL #5597

OoO prior_dfs_sort 同源分组的源点集合完整性约束

prior_dfs_sort 对出口节点做同源分组时,必须全量 DFS 回溯所有前驱链收集完整源点集合(含 memoization),不得只跟最深前驱单路径。源点集合不完整会误判多源出口为单源、导致组间次序错误和中间结果生命周期拉长,进而产生不必要的 spill。

scenario SCENARIO-SCHEDULE-CORE-PIPE-SYNC-SPILL #5614

OoO spill 摘除共享 skip 链时的 skipOps 无条件清理约束

spill 改图摘除被多个消费者共享的 skip 链时,必须无条件从 targetOp 自身 skipOps 摘掉原链,标删仅按链尾张量是否有活消费者从链尾往链首级联。仅当整条链变 orphan 才摘除会让先改指的消费者仍持有已被后改指者释放的 skip op memId,导致 AllocTensorMemRange 查 localBufferMap 失败。

2026-08-22

3 条知识
boundary B-MEM-004 #5443

On-chip direct path shape transport fallback 的内存路径边界

聚合 shape 传输跨片上直连路径(L0C↔L1/L0C↔UB/UB↔L1)时,若逐 op 检查通过但聚合维度不可逐维整除,Pass 必须拦截并回退 DDR;L0C→UB/UB→L1 路径仅 DAV_3510 平台可用,其他平台静默放行会导致 codegen 生成不可执行的片上搬运指令。

scenario SCENARIO-PASS-REPLACE-TENSOR-ASSEMBLE-FOLD #5518

ReplaceTensor 中 assemble toOffset fold 到 L0C2UB copy 的约束

将 assemble 目的偏移 fold 到 L0C2UB copy 的 toOffset 时,dst 偏移必须采用动态优先、静态兜底的双通道判定,且 src fromOffset 全为立即零方可改 copyMode 为 INSERT;dst 与 src 同时携带非零偏移时必须报错失败,否则会导致 UB 内偏移冲突或数据覆盖。

boundary B-MEM-005 #5596

L1 boundary tensor 无 direct DDR path 时的内存路径边界

处理 L1 类型 boundary tensor 时,Pass 必须先检查平台是否存在 L1→DDR 直接通路;无直接通路时必须跳过 SplitBoundaryTensor 改走 ProcessBoundaryTensor 插入间接 VIEW 路径,否则 GenerateMoveOp 会生成非法 COPY_IN 指令导致 CubeProcess 校验失败。

2026-08-21

5 条知识
principle P-SCHEDULING-LIFETIME-COHERENCE #5438

OoO 调度中 reshape skip 的调度与生命周期联合推导

OoO schedule 将 reshape 作为 skip op 处理时,必须保证 reshape 的 producer/consumer 依赖、内存 lifetime 和 sync 约束仍被正确维护;skip 不能导致调度顺序与实际数据依赖不一致。

scenario SCENARIO-PASS-COPYIN-ASSEMBLE-CONDITION #5440

CopyIn 属性在 assemble 条件下的约束

assemble 条件成立时 copyin attr 必须正确传播到下游 consumer;条件判定错误会导致数据搬运路径缺失,进而在 runtime 读取未初始化内存。

principle P-TENSOR-METADATA-SEMANTICS #5461

动态 raw shape 同步的跨 Pass 元数据一致性

动态 raw shape 变更后必须贯通所有 reader 的推导、复制和失效路径;仅在单个 Pass 内局部更新会导致下游 pass 读到 stale shape,进而生成错误的 tiling 或搬运指令。

principle P-PASS-SLICE-CONTRACT #5568

Pass slice contract 作为跨 Pass 可执行契约

Pass slice contract 必须声明 required/produced/invalidated property,并在 pipeline 执行时被实际校验;仅作为描述性声明而不强制校验时,违反契约的 pass 仍会被执行,导致下游状态不一致。

scenario SCENARIO-PASS-PRE-CHECKER-NULLPTR #5576

Pre-checker 访问 optional 状态前的非空校验约束

pre-checker 在访问 optional 或可空状态前必须显式校验非空;未校验时在空图或空函数输入下会触发空指针解引用崩溃。