---
title: 简介
description: "本节介绍两种通过Pass修改Graph的方式，两种Pass实现区别如下："
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/graphdevg/atlasag_25_0118.html
sourcePath: /source/zh/canncommercial/900/programug/graphdevg/atlasag_25_0118.html
indexId: 9e25ba9f0a54a56d35d07486cf02b23771cac45cb0713312974f817bc872098570
---
# 简介

本节介绍两种通过Pass修改Graph的方式，两种Pass实现区别如下：


**表1 两种Pass实现方式比较**

| 改图方式 | 基于Pattern匹配实现Pass（推荐） | 基于改图接口实现Pass |
| --- | --- | --- |
| 核心思路 | 通过Pattern定义匹配模板，框架自动完成匹配查找，开发者只需定义替换结构。 | 直接编写改图函数，手动遍历图结构、查找节点、创建新节点、建立边连接、删除旧节点。 |
| 关键特性 | 只需要三步：匹配→决策→替换 Patterns：定义匹配的模板拓扑 MeetRequirements：条件筛选（可选） Replacement：定义替换结构 | 需手动实现节点查找、边处理、节点增删等操作 代码量大，需要处理所有图修改细节 |
| 适用场景 | 未触发约束，即可使用该开发方式 | 简单、一次性修改场景 直接调用改图接口实时调整图结构 对图结构有完全控制需求 |
| 约束/禁止项 | 控制边：框架不支持控制依赖匹配，仅支持数据边匹配 子图（subgraph）：不支持嵌套子图结构，Pattern必须是扁平的DAG（Directed Acyclic Graph，有向无环图） 动态输入/输出节点：输入/输出个数不确定会导致匹配歧义，无法精确定位 | \- |
