# Paddle Eager Graph

> Use when navigating Paddle eager-mode (dynamic graph) source code, tracing forward/backward execution, debugging autograd issues, understanding PyLayer, or investigating complex-valued gradient computation. Covers Python API to C++ kernel call chain, backward graph topology sort, and inplace version tracking.

- Skill: `paddlepaddle/paddle-eager-graph` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add paddlepaddle/paddle-eager-graph`
- Raw SKILL.md: https://api.skillmd.com/api/skills/paddlepaddle/paddle-eager-graph/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: PaddlePaddle (https://skillmd.com/u/paddlepaddle)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/paddlepaddle/paddle-eager-graph

---


# Paddle 动态图（Eager Mode）导航索引

Paddle 动态图**边执行边建图**：前向执行时构建反向图，调用 `backward()` 时按拓扑序执行反向图。

## 前向调用链路

```
Python paddle.add(x, y)
  │
  ▼
① ops_api.cc          ─ Python-C 映射，GetTensorFromArgs 提取 Tensor
  ▼
② eager_op_function.cc ─ 参数解析 / Dist Tensor / 释放 GIL / backend 选择
  ▼
③ dygraph_functions.cc ─ AMP / Type Promotion / 创建 GradNode / 构建反向图
  ▼
④ api.cc              ─ KernelKey 构造 / Kernel 选择 / PrepareData / InferMeta
  ▼
⑤ PHI Kernel 执行
```

## 关键文件表

| 层级 | 代码路径 | 代码生成器 |
|------|---------|-----------|
| ① Python-C 映射 | `paddle/fluid/pybind/ops_api.cc` | `ops_api_gen.py` |
| ② 动态图 C++ 接口 | `paddle/fluid/pybind/eager_op_function.cc` | `python_c_gen.py` |
| ③ 自动微分函数 | `paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.cc` | `eager_gen.py` |
| ④ PHI 算子库接口 | `paddle/phi/api/lib/api.cc` | `api_gen.py` |

## 反向关键数据结构

| 数据结构 | 一句话描述 |
|---------|-----------|
| **AutogradMeta** | Tensor 持有的反向元信息：梯度、来源 GradNode、slot/rank 位置 |
| **GradNodeBase** | 反向节点基类，纯虚 `operator()` 执行反向计算 |
| **GradSlotMeta** | 描述 GradNode 某个 slot 的 meta 信息与出边 Edge |
| **Edge** | 指向后继 GradNode 的边，含 `in_slot_id_` 和 `in_rank_` |
| **TensorWrapper** | GradNode 中保存前向 Tensor 的包装器，含 inplace 版本快照 |
| **GradTensorHolder** | 反向执行期间临时存放与聚合梯度的二维 buffer |

## 调试场景速查

| 调试场景 | 阅读哪个参考文档 |
|---------|----------------|
| 前向调用链路 / Kernel 选择问题 | [forward-call-chain.md](references/forward-call-chain.md) |
| 反向梯度不正确 / 拓扑排序问题 | [backward-execution.md](references/backward-execution.md) |
| 数据结构成员 / 内存泄漏排查 | [autograd-data-structs.md](references/autograd-data-structs.md) |
| 自定义反向 PyLayer | [pylayer.md](references/pylayer.md) |
| 复数梯度 / Wirtinger 导数 | [complex-autograd.md](references/complex-autograd.md) |
| Inplace 操作 / 版本追踪 | [inplace.md](references/inplace.md) |

## 社区资料（L3 层）

- [PFCC 动态图源码阅读](https://github.com/PaddlePaddle/community/tree/master/pfcc/paddle-code-reading/Dygraph)

