Build
产品支持情况
| 产品 |
是否支持 |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 |
√ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 |
√ |
头文件/库文件
- 头文件:#include <graph/named_io_node_builder.h>
- 库文件:libgraph.so、libgraph_static.a
功能说明
构建图节点并添加到Graph。Build会基于已设置的输入、输出和属性信息创建GNode,并校验输入/输出实例名称及顺序是否与已注册的算子IR定义兼容。成功时返回的GNode已被添加到Graph中。
Build执行以下对外可见校验和操作:
- 校验Type已设置,且节点类型对应的算子IR已通过REG_OP完成注册。
- 校验输入/输出实例名称及顺序是否与已注册的算子IR定义兼容。
- 创建GNode并添加到Graph。
- 返回unique_ptr,成功时清空error_message。
函数原型
std::unique_ptr<GNode> Build(AscendString &error_message)
参数说明
| 参数名 |
输入/输出 |
描述 |
| error_message |
输出 |
构建失败时的错误信息。成功时error_message被清空。 |
返回值说明
| 类型 |
描述 |
| std::unique_ptr |
成功时返回GNode的unique_ptr,已被添加到Graph中。失败时返回nullptr。 |
约束说明
- Builder对象Build成功后不应再次使用,Build成功后再次调用返回nullptr并输出错误信息"Build() has already been called on this builder"。
- 节点类型对应的算子IR需已通过REG_OP完成注册,否则Build返回nullptr。
- 输入/输出实例需按IR定义顺序添加,否则Build返回nullptr。
- Data和NetOutput节点不进行输入/输出实例兼容性校验。
调用示例
ge::Graph graph("test_graph");
ge::AscendString error_msg;
// 构建一个Add算子节点
auto node = ge::NamedIoNodeBuilder(graph)
.Type("Add")
.Name("add_node")
.AddInput("x1")
.AddInput("x2")
.AddOutput("y")
.Build(error_msg);
if (node != nullptr) {
// 构建成功,节点已被添加到graph中
} else {
// 构建失败,查看error_msg获取错误信息
}