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

#### 产品支持情况

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


#### 头文件/库文件

- 头文件：#include <ge/ge_api.h>
- 库文件：libge_runner.so


#### 功能说明

该接口已废弃，请勿使用。

大模型分布式编译切分场景下使用：Graph太大场景下，需要调用该接口，进行切分图，并将切分后的图保存为pb文件。

切分图接口，对Session内的图按照AddGraph的顺序进行切分，切分后的图保存为pb文件。

切分方式由options参数说明中的ge.graphParallelOptionPath参数配置，若未使能并行切分功能，则接口不会进行切分。

切分后的图，命名规则：

- 若工作在SPMD模式，切分后的图的命名规则为：{原图名}_{ClusterId}_{ItemId}_{ChipId}_{VirtualStageId}_{原图GraphId}，切分后的图的个数将为原图的个数*切分份数。
- 若工作在非SPMD模式，切分后的图命名规则为：{原图名}_{原图GraphId}，切分后的图的个数将等于原图个数。

切分图以后，原图将不在Session内存在，生成的新的切分后图的GraphId将使用其他ID替代原图的GraphId。

- 该接口与SaveGraphsToPb接口区别：
  ShardGraphsToFile适用于大模型分布式编译切分场景，而SaveGraphsToPb适用于任何图。

- ShardGraphs：

  - ShardGraphsToFile可以完成搜索策略、图的切分，并输出切分后的图等文件，切分后的图也通过该接口落盘（file_path参数必须指定有效路径）。
  - 而ShardGraphs完成搜索策略、图的切分，并输出切分后的图等文件后，切分后的图保存在内存中，然后通过SaveGraphsToPb落盘。


#### 函数原型

```
Status ShardGraphsToFile(const char_t *file_path = "./") const
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| file\_path | 输入 | 保存图和权重的目录，必须为一个合法路径。 如果该参数为空，则只进行切分图，不生成pb文件。 |


#### 返回值说明

| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| \- | Status | SUCCESS：成功 FAILED：失败 |


#### 约束说明

当前仅支持并行切分模式打开时才可以使能。


#### 调用示例

```
Session session(options); // options中已使能并行切分功能
Graph init_graph("init_graph");
Graph first_graph("first_graph");
Graph second_graph("second_graph");
session.ShardGraphsToFile("/xxx/graph_path");
```
