「Inductor-1」从torch.compile开始认识整个流程
整体流程
flowchart TD
A[用户编写的 PyTorch 代码] --> B[TorchDynamo
图捕获前端]
B --> C{是否满足
Guard 条件?}
C -- 是 --> D[生成 FX Graph]
C -- 否 --> E["重新编译
(形状/设备等变化)"]
E --> B
B --> F[遇到 Graph Break?]
F -- 是 --> G[切割图
回退到 Eager 模式]
G --> D
F -- 否 --> D
D --> H[AOTAutograd
提前自动微分与算子分解]
H --> I[生成前向+反向联合图
并分解复杂算子]
I --> J[Inductor
后端编译器]
J --> K["转换为 Loop-based IR
(展开形状、循环)"]
K --> L["调度器(Scheduler)
算子融合、内存规划"]
L --> M["代码生成器(Codegen)
生成内核代码"]
M --> N{目标硬件?}
N -- GPU --> O[生成 Triton 内核
并通过 Triton 编译]
N -- CPU --> P[生成 C++ 内核
并通过编译器编译]
O --> Q[加载并执行内核]
P --> Q
Q --> R[输出结果]
style A fill:#f9d0c4,stroke:#333
style B fill:#b5e7a0,stroke:#333
style H fill:#b5e7a0,stroke:#333
style J fill:#b5e7a0,stroke:#333
style Q fill:#f9d0c4,stroke:#333