ES (Eager Style)文档

概述

ES (Eager Style)是 GraphEngine 中用于构建计算图的函数式接口模块,提供了便捷的图构建功能。ES 模块支持多种编程语言(C、C++、Python),为用户提供了灵活且易用的图构建方式。

ES 系列 API 核心特点:

  • 自动生成:API 并非手写,而是基于算子原型定义自动生成,减少算子开发者负担,特别是自定义算子也需要使用ES的API的构图场景。
  • 多语言支持:原生支持 C、C++,并可扩展支持 Python,满足不同开发习惯。
  • 全维度兼容:通过良好的API设计和代码生成机制,结合IR语义兼容处理,从源头实现了前后向API,ABI的兼容性保障。

ES 三大关键组件:

  1. ES 基础数据结构(GE仓/GE包):提供 EsGraphBuilder(图构建器)、EsTensorHolder(张量持有者)等核心基础设施,是构图的基石。
  2. ES Code Generator(GE仓/GE包):核心工具 gen_esb,负责读取算子原型定义,自动化生成每个算子对应的构图 API 代码。
  3. Generated ES API(OPP包):由生成器构建的最终产物,包含在算子包中,是用户直接调用的函数接口。

快速导航

API 参考文档

  • Python API - Eager Style Graph Builder Python 接口文档
    • GraphBuilder、TensorHolder 等基础类的主要接口
  • C++/C API - Eager Style Graph Builder C++/C 接口文档
    • EsGraphBuilder、EsTensorHolder 等基础类的主要接口

设计文档

工具文档

RFC 文档

  • RFC 目录 - 设计提案文档
    • 新功能提案
    • 架构改进方案
    • API 变更建议

文档结构

docs/es/
├── README.md                    # 本文件,文档导航入口
├── api/                         # API 参考文档
├── design/                      # 设计和技术分析文档
├── tools/                       # 工具使用文档
└── rfc/                         # RFC 提案文档

sample

开发路线图

我们在2025年首次推出了ES的功能,目标是提供便捷的多语言图构建能力,支持全量算子的自动API生成,并实现良好的前后向兼容性。2026年Q1阶段我们将重点完成API集成和C++构图场景的向后兼容能力,让用户可以直接安装ops包后使用ES构图能力,无需手动生成代码。具体的研发Roadmap如下:


核心架构

  • [December 2025]ES核心架构设计完成并落地,支持全量原型的代码生成和多语言(C, C++, Python)构图。

API 集成

  • [December 2025]math 分包已完成ES API集成。
  • [February 2026]nn、cv、transformer完成ES API集成。
  • [June 2026]hcom分包完成ES API集成。

注:在全量原型的ES API打包到各个算子分包之前,如需使用 ES API,可以参考工具文档中的 generate_es_package.cmake 进行代码生成和集成。

sample和相关文档

  • [December 2025]已提供多语言的 sample,涵盖常见使用场景。
  • [December 2025]已提供细化的文档,即本目录。
  • [January 2026]集合通信的样例完成交付。

后向兼容

  • [December 2025]Python API后向兼容完成设计并落地。
  • [January 2026]C++ API后向兼容性设计完成;C++ API的后向兼容依赖完成历史原型库的设计方案。
  • [March 2026]C++ API后向兼容性代码开发完成;实现C++构图场景的完整向后兼容能力。

自定义算子工程集成

  • [TBD]ascendc 自定义算子工程集成 ES 的代码生成能力,暂无规划。