Eager Style Graph Builder 类关系文档
概述
Eager Style Graph Builder 是 GraphEngine 中用于构建计算图的函数式接口模块,提供了便捷的图构建功能。该模块对外头文件位于 inc/external/ge/eager_style_graph_builder/ 目录下。
目录结构
inc/external/ge/eager_style_graph_builder/
├── c/
│ └── esb_funcs.h # C语言接口函数声明
└── cpp/
├── compliant_node_builder.h # 合规节点构建器类定义
├── es_graph_builder.h # 图构建器类定义
├── es_tensor_holder.h # 张量持有者类定义
├── es_tensor_like.h # 类Tensor类型定义
├── es_c_graph_builder.h # C风格图构建器类定义
└── es_c_tensor_holder.h # C风格张量持有者类定义
核心类关系图
graph TB
subgraph "C API Layer"
EsCGraphBuilder[EsCGraphBuilder<br/>C结构体]
EsCTensorHolder[EsCTensorHolder<br/>C结构体]
EsbFuncs[esb_funcs.h<br/>C函数接口]
end
subgraph "C++ Wrapper Layer"
EsGraphBuilder[EsGraphBuilder<br/>图构建器类]
EsTensorHolder[EsTensorHolder<br/>张量持有者类]
CompliantNodeBuilder[CompliantNodeBuilder<br/>合法构造节点类]
end
subgraph "GE Meta Types"
Graph[ge::Graph<br/>计算图]
GNode[ge::GNode<br/>图节点]
DataType[ge::DataType<br/>数据类型]
Format[ge::Format<br/>张量格式]
end
%% 依赖关系
EsGraphBuilder -->|"封装"| EsCGraphBuilder
EsGraphBuilder -->|"使用"| CompliantNodeBuilder
CompliantNodeBuilder -->|"构建出"| GNode
EsTensorHolder -->|"封装"| EsCTensorHolder
EsTensorLike -->|"创建"| EsTensorHolder
EsGraphBuilder -->|"创建和管理"| EsTensorHolder
EsCTensorHolder -->|"关联到"| GNode
EsCTensorHolder -->|"使用"| DataType
EsCTensorHolder -->|"使用"| Format
EsCGraphBuilder -->|"构建出"| Graph
EsCGraphBuilder -->|"使用"| DataType
EsCGraphBuilder -->|"使用"| Format
%% C API调用关系
EsGraphBuilder -.->|"调用"| EsbFuncs
EsTensorHolder -.->|"调用"| EsbFuncs
EsbFuncs -->|"操作"| EsCGraphBuilder
EsbFuncs -->|"操作"| EsCTensorHolder
主要类详细说明
1. EsGraphBuilder 类
文件位置: cpp/es_graph_builder.h
功能: 图构建器类,用于构建和管理计算图
主要方法:
CreateInput()- 创建图输入节点CreateInputs()- 批量创建图默认格式的输入节点CreateTensor()- 按运行时DataType创建指定形状的张量CreateVector()- 创建向量常量CreateScalar()- 创建标量常量CreateVariable()- 创建变量SetAttr()- 设置图属性SetOutput()- 设置图输出BuildAndReset()- 构建计算图
关系:
- 封装了
EsCGraphBuilderC结构体 - 创建和管理
EsTensorHolder对象 - 最终构建出
ge::Graph对象
2. EsTensorHolder 类
文件位置: cpp/es_tensor_holder.h
功能: 张量持有者类,封装了张量的各种操作
主要方法:
- 算术运算:
operator+,operator-,operator*,operator/ - 属性设置:
SetDataType(),SetFormat(),SetShape() - 属性管理:
SetAttr(),SetAttrForNode() - 访问器:
GetCTensorHolder(),GetProducer()
关系:
- 封装了
EsCTensorHolderC结构体 - 与
ge::GNode关联(通过GetProducer()) - 支持链式调用模式
3. EsTensorLike 类
文件位置: cpp/es_tensor_like.h
功能:类 Tensor 类型定义,用于将 EsTensorHolder、标量和向量转为 EsTensorHolder 对象
主要方法:
ToTensorHolder()- 转为EsTensorHolder对象GetOwnerBuilder()- 获取对应Tensor的owner builder
4. CompliantNodeBuilder 类
文件位置: cpp/compoliant_node_builder.h
功能: 合规节点构建器类,用于构建符合IR规范的图节点
主要方法:
OpType()- 设置操作符类型IrDefInputsV2()- 定义ABI安全的IR输入规范IrDefOutputsV2()- 定义ABI安全的IR输出规范IrDefAttrsV2()- 定义ABI安全的IR属性规范Name()- 设置节点名称InstanceDynamicInputNum()- 设置动态输入实例数量InstanceDynamicOutputNum()- 设置动态输出实例数量InstanceOutputDataType()- 设置输出数据类型InstanceOutputShape()- 设置输出形状InstanceOutputOriginShape()- 设置输出原始形状InstanceOutputStorageShape()- 设置输出存储形状InstanceOutputFormat()- 设置输出格式InstanceOutputOriginFormat()- 设置输出原始格式InstanceOutputStorageFormat()- 设置输出存储格式Build()- 构建并返回图节点
5. C API 函数
文件位置: c/esb_funcs.h
功能:提供底层的 C 语言接口
主要函数类别:
- 图构建器管理:
EsCreateGraphBuilder(),EsDestroyGraphBuilder() - 输入创建:
EsCreateGraphInput(),EsCreateGraphInputWithDetails() - 常量创建:
EsCreateScalar*(),EsCreateVector*(),EsCreateConst*() - 属性设置:
EsSet*AttrForGraph(),EsSet*AttrForTensor(),EsSet*AttrForNode() - 输出设置:
EsSetGraphOutput() - 图构建:
EsBuildGraphAndReset()
使用示例
参考sample