CANN graph-autofusion SuperKernel 融合性能分析报告撰写指南:SK-off/SK-on 对比口径、分类规则与固定交付物
【免费下载链接】graph-autofusionGraph-autofusion 是一个面向昇腾(Ascend)芯片的轻量级、解耦式组件集合,旨在通过自动融合技术加速模型执行。 目前已开源 SuperKernel 组件和 Autofuse 组件,未来将持续开放更多自动融合相关模块。项目地址: https://gitcode.com/cann/graph-autofusion
本篇指南围绕 CANN graph-autofusion 仓库中 SuperKernel 融合性能分析技能所定义的「中文性能分析报告模板」展开,系统讲解同一 workload 下SK-off(S0 基线)与SK-on(Sx 候选)profile 对比的标准统计口径、逐 SK 分类规则、层级融合覆盖、Fusion Family 跨层诊断以及固定交付物规范。读者读完后,可以按模板产出结构合规、结论边界清晰、机器可校验的性能分析报告,并理解其背后的kernel_projection_trace_v2映射、source_scope_map_v2源码归属与动态噪声阈值等实现机制。
1. 模板定位:它只回答两个问题
该模板(chinese-performance-analysis-report-template.md)并非通用的 SuperKernel 报告格式,它只用于同一 workload 下SK-off(S0)与SK-on(Sx)的 profile 对比,回答两个不同的问题:
- 一个融合 SK 相比其在 S0 中对应的原始子算子集合,端到端设备区间是否变快;
- 若融合 SK 的表现异常,哪个 S0 child 或融合内 child 是主要审阅对象。
1.1 主比较口径
主比较口径始终是S0 child interval P50 对 Sx parent SK duration P50。其中:
S0 duration_sum与union_duration只用于解释串并行和累计工作量,不能替代 interval 作为 keep/prune 或收益结论的依据;- Sx 融合内 child 时间仅在完整、可归属的
sk_prof下作为补充诊断,不能与 S0 的 host 时钟做绝对时间偏移比较。
模板本身不包含任何特定模型、算子序列、raw SK ID、step ID 或性能数值——真实采集数据只能出现在独立的性能分析报告中;模板只定义报告字段、统计口径和结论边界。
1.2 适用范围(硬边界)
模板仅用于普通S0 SK-off对Sx SK-on的融合性能对比,且两侧必须满足 skill 的 profile、结构映射和统计门禁。不得用于以下场景:
- 两个 SK-on 候选之间的源码调序、多流或 source-reorder 对比;
- Stage O 的 O0/O1 DCCI option 对比(该场景有独立协议 dcci-option-tuning.md);
- correctness、clean 性能、编译性能或其他非 profile-vs-baseline 对比。
这些场景必须使用各自的实验/诊断报告格式和原生统计口径,不得复用本模板的 S0 interval、Sx parent、逐 SK classification、层级 family 或 scope-action 展示结构。完整的使用边界与可读性约束同时定义在 SKILL.md 的Chinese Human-Facing Report一节。
2. 分析前的证据链:采集门禁、结构映射与源码归属
报告模板是分析流程的「出口」;在填写模板之前,skill 强制要求先通过三层证据门禁,模板中大量字段(映射覆盖、blocker、source-layer mapping)直接来源于此。
2.1 采集门禁(Entry Gate)
需要两份新鲜、不可变、相互独立的采集根目录及其 manifest:
baseline_profile:归档kernel_details、task_time、trace_view;candidate_profile:归档kernel_details、task_time、trace_view,以及 profile 进程自身的sk_graph_origin、sk_graph_updated、sk_fused_nodes、sk_scope_split、super_kernel;sk_proftrace 为可选项,仅用于映射后的调度诊断。
使用 artifact_contract.py 的validate-set校验;缺失或无效的 manifest 是采集 blocker,必须重新采集,不得用事后拼装的 manifest 补洞。collection manifest 的字段结构(capture_role、config/controlfingerprint、workload_fingerprint、files、manifest_fingerprint等)可参见 collection-manifest-schema.json。
2.2 结构映射:kernel_projection_trace_v2
每个融合 SK 在做性能分析前都必须应用 projected_trace_mapping.py 完成kernel_projection_trace_v2:把 profile 进程的sk_graph_origin投影到可观测 kernel 节点,将每个完整 per-stream kernel 序列对齐到 baseline 的Step Id,按(stream role, kernel ordinal)物化融合 child。完整协议见 structural-association.md。
只有 stream-role 注入唯一、所有 step 全量一致、每个 child 唯一落点、候选父 SK 在至少三个 step 中均存在时,才输出kernel_projection_structural + exact_projected_trace;任一门禁失败都返回diagnostic_only + insufficient_evidence。
2.3 源码归属:source_scope_map_v2
exact_projected_trace只证明measured graph occurrence,不证明任何源码区间。模板中「逐层融合清单 / exact source-layer mapping」字段只有source_scope_map_v2 + exact才可填写,其证据链为「original business graph → 唯一 labeled 多图同构 → calibration occurrence → archived source bytes + [start_offset, end_offset)」,详见 source-calibration-mapping.md。raw task/node/stream/SK ID、生成名称、层号、重复 op signature、局部 op window 和跨进程时间戳都不能产生源码 exact。
3. 一页结论(必填)
报告第一节必须是决策者可直接阅读的一页结论表,字段固定:
| 项目 | 固定输出 |
|---|---|
| 对比对象 | S0 SK-off vs Sx SK-on;模型、device、workload、轮次 |
| 采集有效性 | manifest-set、profile/process ownership、配置和 workload 一致性、声明变更 |
| 映射覆盖 | SK 总数、精确映射数、阻塞数、每项配对样本数 |
| 分类汇总 | beneficial / neutral / regressed / insufficient_evidence 的实例数 |
| 主要收益 family | 以主口径列出 family、实例数、P50 收益和离散度 |
| 主要劣化 family | 列出所有实际 regressed 实例,不以 family 平均值掩盖 |
| 行动边界 | 可测量结论、待 reprofile 项、是否具备源码动作证据 |
注意「主要劣化 family」要求列出所有实际 regressed 实例,禁止用 family 平均值稀释劣化信号;「行动边界」需明确结论属于可测量结论、待 reprofile 项,还是已具备源码动作证据。
4. 指标定义与符号(必填)
对 S0 中同一 SK 的一个 child occurrence 集合,模板定义如下指标:
child_end = child_start + child_duration S0 interval = max(child_end) - min(child_start) S0 duration_sum = sum(child_duration) S0 union = child 区间并集长度 Sx parent duration = Sx kernel_details 中该 SuperKernel 的 Duration(us) improvement_us = P50(S0 interval) - P50(Sx parent duration) improvement_pct = improvement_us / P50(S0 interval) * 100 noise_pct = max(3.0, 2*S0_interval_MAD/S0_interval_P50*100, 2*Sx_parent_MAD/Sx_parent_P50*100)三个统计量的含义与用途如下表:
| 统计量 | 含义 | 在报告中的用途 |
|---|---|---|
| P50 | 第 50 百分位数,即中位数;50% 的样本不大于该值 | 作为 S0 interval 与 Sx parent 的主比较值,计算收益或劣化 |
| P90 | 第 90 百分位数;90% 的样本不大于该值 | 观察慢尾与波动上界,不单独决定 classification |
| MAD | median(\|x_i - P50\|),样本相对中位数的中位绝对偏差 | 稳健衡量离散度,参与noise_pct计算;不易被单个异常值主导 |
所有时间统计量以us记录。P50 表示典型耗时,P90 用于发现尾部变慢,MAD 用于判断观测到的差异是否大于重复采样波动;三者必须同时随逐 SK 比较输出。
需要特别强调:S0 interval = max(child_end) - min(child_start)保留了不同 stream 的并行关系,是性能分类的主判据;duration_sum(累计设备工作时间)与union(去除重叠后的设备忙碌区间)仅用于诊断并行串行化、额外同步、资源开销和调度行为。这正是 performance-classification.md 中「baseline_interval保留不同 stream 的并行关系,是性能分类的主判据」的落地形式。
4.1 网络层数与层级融合覆盖(条件必填)
从当前模型配置读取num_hidden_layers,并以配置中的一基 layer index 报告网络层数与层类型。逐层融合表必须区分「配置层信息」和「已证明的 SK-to-source-layer 映射」:只有source_scope_map_v2 + exact可以把一个 profile SK 写入具体源码层;graph occurrence ordinal、raw SK ID 或 family occurrence 数都不能替代层映射。下表中的<family_label>必须与第 7 节的 family 标签完全一致,以便从某层的融合清单直接跳转到该 family 的性能结论。
| 字段 | 固定输出 |
|---|---|
| 总层数 | <num_hidden_layers> |
| 层类型分布 | <layer_type>、一基 layer index 列表及计数 |
| 每层融合清单 | 每一个一基<layer_index>的<family_label>列表;没有融合时显式写"无" |
| family 层覆盖汇总 | <family_label> / <covered_layer_count> / <covered_layer_ranges> / <appears_in_all_layers> |
| 映射边界 | <exact source layer mapping \| unproven> |
有 exact source-layer mapping 时,正文按下表展示。逐层表可以按连续、且融合 family 列表完全相同的层范围折叠,但必须保留所有层号;family 汇总中的covered_layer_ranges必须由逐层表可逆展开。appears_in_all_layers=是仅当该 family 覆盖1..num_hidden_layers的每一层时成立。
| 层号或连续层范围 | 配置层类型 | 融合 family(与第 7 节同标签) | 映射状态 |
|---|---|---|---|
<layer_index_or_range> | <configured_layer_type> | <family_label_0>、<family_label_1>、... / 无 | source_scope_map_v2 + exact |
| family(与第 7 节同标签) | 覆盖层数 / 总层数 | 覆盖层号或范围 | 是否覆盖全部层 | 映射状态 |
|---|---|---|---|---|
<family_label> | <covered_layer_count> / <num_hidden_layers> | <covered_layer_ranges> | <是 / 否> | source_scope_map_v2 + exact |
没有 exact source-layer mapping 时,报告必须写明「当前 profile 不能证明每一个 SK 属于哪一层」,不得输出或推测逐层融合清单、覆盖层号、覆盖比例或"全部层出现";此时仅可列出 profile family 及其 occurrence 数,并将层覆盖标记为unproven。
4.2 分类规则
| 分类 | 条件 | 固定行动语义 |
|---|---|---|
| beneficial | improvement_us >= 1us且improvement_pct >= noise_pct | 性能上建议 keep;非源码 action |
| regressed | improvement_us <= -1us且improvement_pct <= -noise_pct | 优先审阅;无 source map 不做源码 prune |
| neutral | 数据充分但未达到上两类 | 无明确收益;不代表错误 |
| insufficient_evidence | 映射、样本、尾部、fingerprint 或 metadata 门禁失败 | 记录 blocker 并 reprofile/block |
分类对应的 scope action 固定映射为beneficial -> keep、regressed -> prune、neutral -> prune、insufficient_evidence -> reprofile(详见 regression-diagnosis.md);action 仅描述只读分析结果,skill 本身不得直接修改 scope。
实现佐证:分类器核心实现在 analyze_fusion_performance.py 的classify_performance()(约 L1920 起)。从源码可见:required_occurrences = max(HARD_MIN_OCCURRENCES, min_occurrences),即min_occurrences=3是自动 keep/prune 的硬下限,不能被 CLI 降低;当两侧 count 不足或统计量非有限值(non_finite_performance_statistics)时直接返回insufficient_evidence;当 baseline 或 candidate 恰好只有最低 3 个 occurrence 时,还会校验 P50 两侧最大距离是否超过max(3*MAD, P50*min_relative_change_pct, min_absolute_change_us),若单侧长尾未被 MAD 噪声带覆盖则追加minimum_sample_unrepresented_tail错误并强制insufficient_evidence/reprofile——这对应模板中「数据充分但未达到上两类」之外的证据不足边界。
5. 逐 SK 性能结论(摘要 + 全量明细)
本章面向阅读设计:先展示四类结论的数量,再定位需要审阅的实例。每一个精确 graph occurrence 的完整行记录保存在机器可读 JSON/CSV 中;Markdown 不直接铺开全量 SK 表,避免 100+ 行表格掩盖实际 regression 和证据不足项。
5.1 分类概览(必填)
| classification | 实例数 | 占比 | 阅读动作 |
|---|---|---|---|
| beneficial | <count> | <pct> | 在 family 表中确认是否一致;不等同于端到端晋级 |
| neutral | <count> | <pct> | 只在有明确优化假设时抽样审阅 |
| regressed | <count> | <pct> | 全部进入"明确劣化实例"表 |
| insufficient_evidence | <count> | <pct> | 按 blocker 汇总,列出重采条件 |
5.2 阅读路径与全量明细(必填)
| 读者问题 | Markdown 展示 | 机器可读全量数据 |
|---|---|---|
| 是否存在明确劣化 | 列出全部regressed实例及其主指标 | profiling-analysis-result.json |
| 哪些融合 family 值得关注 | family 汇总及 split / weak-benefit | fusion-family-summary.csv |
| 某一个 SK 的全部统计和 identity | 正文只展示代表性或异常实例 | profiling-analysis-result.json、fusion-family-layer-comparison.csv |
每个全量逐 SK 记录必须包含:稳定报告身份、ordered child sequence、stream/core topology、对齐 occurrence、S0 interval/duration_sum/union、Sx parent P50/P90/MAD、收益、noise threshold、classification、blocker 和 scope action。它是自动判定的权威数据,不以 op 名称或 raw SK ID 聚合。
5.3 代表性多 child SK(条件展示)
正文针对多 child、明确劣化或需解释的 SK,使用下面的紧凑卡片;不把该实例外推为同 family 的所有实例。
| 项目 | 数值 |
|---|---|
| child topology | <child_0>(<core_0>) -> <child_1>(<core_1>) -> ... -> <child_n>(<core_n>) |
| S0 interval P50 | <s0_interval_p50_us> us |
| S0 union P50 | <s0_union_p50_us> us |
| Sx parent P50 / P90 / MAD | <sx_parent_p50> / <sx_parent_p90> / <sx_parent_mad> us |
| improvement / noise | <improvement_us> us / <improvement_pct>% / <noise_pct>% |
| classification | <beneficial \| neutral \| regressed \| insufficient_evidence> |
模板明确要求:不能用 child duration 的加和替代 S0 interval,也不能用单个实例替代同 family 的其他实例。child_count仅是描述性字段,不参与 profiling 门禁、动态阈值或分类——单子算子可以是 beneficial,多子算子也可以是 neutral 或 regressed,不得以child_count >= 5作为 profiling 条件,也不得以child_count == 1自动生成排除决定。
6. 融合内 child 与调度诊断(条件必填)
仅当 Sxsk_prof完整、无 buffer-full、且 parent occurrence 与 child/lane 可按device_id + model_id + sk_id + step_id绑定时,才追加下表。否则固定输出一句:「sk_prof不完整或不可归属,融合内 child/lane 诊断未执行;不得推断 Cube/Vector 串行、DCCI 状态或根因。」
| parent identity | child position/symbol | lane 类型 | Sx child wall/max-lane P50/P90/MAD | 对应 S0 child P50 | 观察 | 置信度 |
|---|---|---|---|---|---|---|
<填充> | <填充> | CUBE / VECTOR / MIX | <填充> | <填充> | 仅事实与可检验假设 | high / low / insufficient |
允许写"调度假设",禁止把没有 A/B 验证的结论写成根因。若有 DCCI disable-all 数据,另用 Stage O 专用表比较 O0/O1 和逐 child,不与普通 S0/Sx 表混用。
两点实现侧的硬约束值得报告作者注意:
- 时钟域隔离:
kernel_details使用 host 域时间戳,而sk_prof可能使用设备计数器,二者之间不要求绝对时钟偏移;重复 parent occurrence 必须用显式(device_id, model_id, sk_id, step_id)域绑定(见 structural-association.md)。 - buffer-full 即 blocker:若
super_kernel.log报告buffer is full, stop dump the time of nodes,lane 集合不完整,无法证明 Cube/Vector 或 DCCI 行为,必须拒绝该诊断(但不会使已证明的 projected baseline mapping 或其 interval 分类失效)。运行时侧sk_prof相关实现可参考 sk_event_recorder.cpp 及其测试 test_profiling_st.cpp。
7. Fusion Family 与跨层/重复实例比较(至少三个重复实例时必填)
对重复 block 模型(如多层 Transformer),逐 SK 分类完成后必须追加跨层 family 诊断(companion 规范见 cross-layer-family-analysis.md)。family identity 固定为:
ordered canonical child op sequence + ordered child source-stream-role pattern + ordered child core-family pattern + fusion boundary + stable dtype/shape/port signature(若可得)不能用 layer index、raw SK ID、task ID 或生成名称定义 family;若 dtype、shape、port、core family 或流拓扑不同,即使 op 名称序列相同也必须拆为不同 family。若没有 exact source mapping,仅称"graph occurrence",不可称"源码层"。
| family | topology | instances | B/N/R/I | S0 interval P50 min/median/max/MAD | Sx parent P50 min/median/max/MAD | 收益 P50 | split | weak benefit / outlier |
|---|---|---|---|---|---|---|---|---|
<family_id> | <child_0> -> <child_1> -> ... -> <child_n> | <count> | <B/N/R/I> | <min / median / max / MAD> | <min / median / max / MAD> | <pct> | <是 / 否> | <count / count> |
family 表是阅读性诊断,不能改变逐 SK classification,也不能用 beneficial 实例覆盖同 family 的 regressed/insufficient 实例。family 同时出现 beneficial 与 regressed 时标记family_classification_split,所有实际 regressed 实例另列优先审阅表。对 child 较多而正收益很小的融合,按family_gain_median - max(3 * family_gain_MAD, 3 percentage points)标记weak_relative_benefit复核队列——它是审阅优先级信号而非 regressed,不改变既有 classification/action,也不能直接触发 scope prune、option trial 或源码重排。
8. 结论、优先级与后续动作(必填)
结论必须分为三层,避免越权:
| 层级 | 允许结论 | 禁止结论 |
|---|---|---|
| 逐 SK 性能 | beneficial / neutral / regressed / insufficient_evidence | 用家族平均值取代逐实例结论 |
| 调度诊断 | 有证据时提出可检验假设 | 从不完整sk_prof宣称 root cause |
| 源码行动 | 仅 source scope map exact 时提出范围动作 | 从 raw ID、graph ordinal 或 op 名称反推源码行号 |
固定排序:先列所有regressed,再列insufficient_evidence,再列多 child 的weak_relative_benefit,最后列neutral。每个条目必须有:报告 identity、数据事实、门禁状态、可执行的下一步及其前置采集条件。
报告结论必须同时写明:逐 SK 分类是否可用、收益或劣化的 family 分布、不能由 family 覆盖的异常实例、是否具备源码 action 证据,以及未执行的融合内诊断及其原因。诊断假设只能写入diagnostic_hypotheses(含kind、confidence、单个range_id、evidence、explanation_zh、requires_ab_test=true),永远不写root_cause;只有后续单变量 A/B 稳定复现后才能形成根因证据(见 regression-diagnosis.md 的证据等级定义:high 仅限直接 config 或可可靠归属的 trace 证据,medium 仅限 counter/统计相关证据,low 仅为待验证假设且必须附带 blocker)。
9. 固定交付物与机器可读约束
每次普通 S0/Sx 性能对比拟固定生成:
PROFILING_ANALYSIS.md:一页结论、全量逐 SK 主比较和结论边界;profiling-analysis-result.json:逐 SK 机器结果、fingerprint、统计、分类和 blocker;PROJECTED_TRACE_MAPPING.md/projected-trace-mapping.json:S0 child 与 Sx SK 的精确映射;FUSION_FAMILY_LAYER_ANALYSIS.md、fusion-family-summary.csv、fusion-family-layer-comparison.csv:重复实例/跨层诊断;- 仅在 lane 采集完整时增加
SK_CHILD_SCHEDULING_ANALYSIS.md与对应 JSON; - 仅在 Stage O DCCI 模式时增加
DCCI_REGRESSION_ANALYSIS.md与dcci-regression-analysis.json,不混入 schema 1.2 结果。
9.1 推荐命令行执行流
先在 superkernel-fusion-performance-analysis skill 目录下运行完整的 analyzer,先产生权威的融合 child 映射:
python3 scripts/projected_trace_mapping.py \ --baseline-kernel-details artifacts/S0/profile/profiler/kernel_details.csv \ --profile-collection-manifest artifacts/S1/profile/association-artifact-manifest.json \ --device-id 0 --model-id 48 \ --json-out output/projected-trace-mapping.json \ --markdown-out output/PROJECTED_TRACE_MAPPING.md要求满足source_kernel_nodes == baseline_rows_per_step[step]、零替代 stream-role 解、至少三个 step 且exact_projected_trace后,才可使用该 SK 的 baseline interval。随后运行性能分类器:
python3 scripts/analyze_fusion_performance.py \ --baseline-profile artifacts/S0/profile/profiler/kernel_details.csv \ --candidate-profile artifacts/S1/profile/profiler/kernel_details.csv \ --sk-meta artifacts/S1/sk_meta \ --baseline-config artifacts/S0/config.json \ --candidate-config artifacts/S1/config.json \ --baseline-workload artifacts/S0/workload.json \ --candidate-workload artifacts/S1/workload.json \ --declared-change-set artifacts/S1/declared-change.json \ --candidate-name S1 --experiment-id exp-1 --round-id S1-BASE \ --analysis-agent-id analysis-agent-1 --source-revision REVISION \ --sk-prof artifacts/S1/profile/profiler/sk_prof_device_0.json \ --environment-evidence artifacts/environment.json \ --source-scope-map artifacts/source-mapping/source-scope-map-v2.json \ --source-root worktrees/stable-marker \ --baseline-collection-manifest artifacts/S0/profile/association-artifact-manifest.json \ --profile-collection-manifest artifacts/S1/profile/association-artifact-manifest.json \ --json-out output/profiling-analysis-result.json \ --markdown-out output/PROFILING_ANALYSIS.md可选参数--sk-prof只是诊断用 child-scheduling trace,不是 baseline child mapping 的输入,也不要求与kernel_details有绝对时钟偏移。若需要从既有结果确定性重生成 Markdown:
python3 scripts/render_fusion_performance_report.py \ --json-in output/profiling-analysis-result.json \ --markdown-out output/PROFILING_ANALYSIS.md9.2 机器可读约束
- 所有 analyzer 输入输出必须使用相对于结果文件目录的路径;两条 manifest 不放松任何已有 config、workload、declared-change、profile、environment 或 source-map 门禁;
- schema 1.2 的 renderer 只接受完整 producer report:identity、所有两侧 fingerprint、inputs、thresholds、四个列表、blockers、
next_agent_guidance_zh、analysis_content_fingerprint均必需;renderer 会从 identity 字段重算analysis_id、核验round_id属于 candidate 的BASE/Pn/FINAL家族,并重算 content fingerprint,缺失或冲突即拒绝; - 逐 SK decision 的 classification/action 只能是
beneficial/keep、neutral/prune、regressed/prune、insufficient_evidence/reprofile|block,且scope_actions必须按唯一(sk_id, range_id)与 decisions 一一对应、字段完全一致; interval_unproven=true时,下游 strategy 必须逐 range 生成 P,不得根据 op 名称顺序猜测 source 区间不重叠;- 本分析为只读流程:analyzer 与 renderer 只读输入 artifact 并写出结果文件,不运行推理、不编辑 scope、不应用 option、不声明 promotion(详见 SKILL.md 的
Read-Only Boundary与Diagnostic Contract)。
10. 常见误用与红线总结
| 红线 | 正确做法 |
|---|---|
用duration_sum或union替代 interval 作收益结论 | 主口径只能是 S0 interval P50 vs Sx parent duration P50 |
| 用 child duration 加和替代 S0 interval | 始终用max(child_end) - min(child_start)保留流并行关系 |
| 用 raw SK ID / graph ordinal / op 名称反推源码行号 | 只有source_scope_map_v2 + exact且 boundary 证明 source offset 才可做源码动作 |
| 把单次 profiling 或 interval 相关性写成已证明根因 | 只写事实与可检验假设,根因需单变量 A/B 稳定复现 |
从不完整sk_prof(含 buffer-full)推断 Cube/Vector 串行、DCCI 状态 | 固定输出"融合内诊断未执行";DCCI 状态必须来自显式 config/environment 证据 |
| 用 family 平均值掩盖实际 regressed 实例 | 所有 regressed 实例单独列出,family_classification_split时优先审阅 |
| 把本模板用于 SK-on 源码调序、Stage O DCCI O0/O1、correctness 等场景 | 这些场景使用各自的实验/诊断报告格式与原生统计口径 |
按此模板产出的报告,配合profiling-analysis-result.json等机器可读交付物,可以在「逐 SK 结论不被 family 平均稀释、源码动作不被 raw ID 僭越、调度诊断不越权宣告根因」的边界内,为 SuperKernel 融合的 keep/prune、跨层一致性审阅与后续单变量实验提供可追溯、可复现的证据闭环。
【免费下载链接】graph-autofusionGraph-autofusion 是一个面向昇腾(Ascend)芯片的轻量级、解耦式组件集合,旨在通过自动融合技术加速模型执行。 目前已开源 SuperKernel 组件和 Autofuse 组件,未来将持续开放更多自动融合相关模块。项目地址: https://gitcode.com/cann/graph-autofusion
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考