---
title: BuildAndReset
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/atlasgeapi_07_0478.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/atlasgeapi_07_0478.html
indexId: 3c00892b011fe6a0e1ed501a6ebd49f6741558e1b36cc4c429694c246eae2b8872
---
# BuildAndReset

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 头文件/库文件

- 头文件：#include <ge/es_graph_builder.h>
- 库文件：libeager_style_graph_builder_base.so、libeager_style_graph_builder_base_static.a


#### 功能说明

构建计算图。


#### 函数原型

- 构建计算图
  1 std::unique_ptr<Graph> BuildAndReset() const

- 根据输出张量列表构建计算图
  1 std::unique_ptr<Graph> BuildAndReset(const std::vector<EsTensorHolder> &outputs)


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| outputs | 输入 | 输出张量持有者向量。 |


#### 返回值说明

| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| \- | std::unique\_ptr<Graph> | 返回构建的图智能指针，失败时返回nullptr。调用后图构建器将不再可用。 |


#### 约束说明

无


#### 调用示例

- 构建计算图
  1 2 3 4 5 6 7 8 9 10 // 1. 创建图构建器（EsGraphBuilder） EsGraphBuilder builder("graph_name"); // 2. 添加 2 个输入节点 EsTensorHolder [data0, data1] = builder.CreateInputs<2>(); // 3. 添加中间节点，C++中，加减乘除等常用运算符被重载，可以直接使用 EsTensorHolder add = data0 + data1; // 4. 设置图输出 builder.SetOutput(add, 0); // 5. 完成构图，获取构造好的`Graph`对象，`builder`中的资源随析构而销毁 std::unique_ptr<ge::Graph> graph = builder.BuildAndReset();

- 根据输出张量列表构建计算图
  1 2 3 4 5 6 7 8 // 1. 创建图构建器（EsGraphBuilder） EsGraphBuilder builder("graph_name"); // 2. 添加 2 个输入节点 EsTensorHolder [data0, data1] = builder.CreateInputs<2>(); // 3. 添加中间节点，C++中，加减乘除等常用运算符被重载，可以直接使用 // 4. 设置图输出 // 5. 完成构图，获取构造好的`Graph`对象，`builder`中的资源随析构而销毁 std::unique_ptr<ge::Graph> graph = builder.BuildAndReset({data0 + data1}); // 一行中完成3，4，5
