---
title: 基础数据结构和接口列表
description: "本文档提供了进行算子开发和图开发时依赖的基础数据结构和接口说明，分类如下："
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/maintenref/basicdataapi/atlasopapi_07_00001.html
sourcePath: /source/zh/canncommercial/900/maintenref/basicdataapi/atlasopapi_07_00001.html
indexId: 994f352c6efa481724080a4550f62cf4effc4bc79d45ba0e2acbedcce5f7cfa278
---
# 基础数据结构和接口列表

本文档提供了进行算子开发和图开发时依赖的基础数据结构和接口说明，分类如下：

- ge（Graph Engine）命名空间
  ge是Graph Engine的缩写，代表一个通用的命名空间，专注于构图和图编译处理。此命名空间提供了一套丰富的API，用于构建和管理复杂的图结构。它的核心优势在于其通用性和灵活性，能够满足各种图处理需求，无论是在设计阶段还是在编译过程中。


- gert（GE Runtime）命名空间
  gert是GE Runtime的缩写，这个命名空间专门为运行时环境而设计，提供了一系列的高性能数据结构，以确保在执行时能够提供最佳性能。

- C接口
  用于算子和图开发的C语言接口。


#### gert命名空间


**表1 gert命名空间**

| 分类 | 数据结构/接口名称 | 功能描述 |
| --- | --- | --- |
| 类和结构体 | AnchorInstanceInfo | 用来描述一个算子的IR原型定义的输入信息与实际输入之间的关系。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/compute\_node\_info.h。 |
| 类和结构体 | CompileTimeTensorDesc | 用于描述编译时的Tensor描述信息，包含dtype信息以及format信息。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/compute\_node\_info.h。 |
| 类和结构体 | ComputeNodeInfo | 用于将算子的相关编译信息进行序列化保存，以便可以在图执行阶段能够高效地获取这些信息。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/compute\_node\_info.h。 |
| 类和结构体 | ContextHolder | Context是算子Host侧实现函数执行时的上下文，由于构造出来的Context存储的都是指针类型，为了方便进行生命周期和所有权管理，提供ContextHolder类进行资源管理。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/context\_holder.h。 |
| 类和结构体 | ContinuousVectorVector | 在内存中开辟一块连续的空间，用于存储数据的描述信息以及实际的数据元素，元素类型为ContinuousVector结构。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/continuous\_vector.h。 |
| 类和结构体 | ContinuousVector | 本类是一个POD类，在内存中开辟一块连续的空间用于存储描述信息以及实际内存数据。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/continuous\_vector.h。 |
| 类和结构体 | ExpandDimsType | ExpandDimsType类基于补维后的shape，描述了补维规则。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/expand\_dims\_type.h。 |
| 类和结构体 | ExtendedKernelContext | InferShapeContext、TilingContext等的基类，ExtendedKernelContext中提供的方法如获取算子type、name、属性等接口均可以在InferShape、Tiling时调用。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/extended\_kernel\_context.h。 |
| 类和结构体 | InferDataTypeContext | 用于datatype推导的上下文结构。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/infer\_datatype\_context.h。 |
| 类和结构体 | InferFormatContext | InferFormatContext继承自ExtendedKernelContext，是一个用于Format推导的上下文类。 头文件位于CANN软件安装后文件存储路径下的 include/graph/infer\_format\_context.h。 |
| 类和结构体 | InferShapeContext | 用于shape推导的上下文结构。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/infer\_shape\_context.h。 |
| 类和结构体 | InferShapeRangeContext | 用于shape range推导的上下文结构。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/infer\_shape\_range\_context.h。 |
| 类和结构体 | OpContextBuilderBase | OpContextBuilderBase是各ContextBuilder的基类，用于构造子类context中算子信息，包括算子类型、名称、输入输出原型个数、输入输出实例个数、属性等信息。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/op\_context\_builder\_base.h。 |
| 类和结构体 | OpImplRegisterV2 | OpImplRegisterV2类作为注册接口类，提供了一系列算子原型注册接口，供用户注册指定算子类型的Tiling函数、Infershape函数、私有属性等信息。用户调用算子原型注册接口进行注册时会间接使用到该类。 头文件位于CANN软件安装后文件存储路径下的include/register/op\_impl\_registry.h。 |
| 类和结构体 | OpInferDataTypeContextBuilder | OpInferDataTypeContextBuilder用于构建InferDataTypeContext 。构造出的Context在算子数据类型推导过程中作为入参，用于获取必要的算子输入输出数据。推导完成后，结果会被写入回上下文中。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/op\_infer\_datatype\_context\_builder.h。 |
| 类和结构体 | OpInferShapeContextBuilder | OpInferShapeContextBuilder用于构建InferShapeContext。构造出的Context在算子Shape推导过程中作为入参，用于获取必要的算子输入输出数据。推导完成后，结果会被写入回上下文中。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/op\_infer\_shape\_context\_builder.h。 |
| 类和结构体 | OpInferShapeRangeContextBuilder | OpInferShapeRangeContextBuilder用于构建InferShapeRangeContext。构造出的Context在算子ShapeRange推导过程中作为输入，用于获取必要的算子输入输出数据。推导完成后，结果会被写回上下文中。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/op\_infer\_shape\_range\_context\_builder.h。 |
| 类和结构体 | OpKernelContextBuilder | 用于构建一个通用的KernelContext对象，该上下文作为算子Host实现实际执行阶段的输入上下文。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/op\_kernel\_run\_context\_builder.h。 |
| 类和结构体 | OpTilingContextBuilder | OpTilingContextBuilder用于构建TilingContext。构造出的Context在算子Tiling计算过程中作为入参，用于获取必要的算子输入输出等数据。Tiling计算完成后，结果会被写回上下文中。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/op\_tiling\_context\_builder.h。 |
| 类和结构体 | OpTilingParseContextBuilder | OpTilingParseContextBuilder用于构建TilingParseContext。构造出的Context在算子TilingParse计算过程中作为输入，用于获取必要的算子输入输出数据。完成Parser计算后，结果会被写回到上下文中。 头文件位于CANN软件安装后文件存储路径下的include/base/context\_builder/op\_tiling\_parse\_context\_builder.h。 |
| 类和结构体 | Range | Range类用于描述一个对象的上下界。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/range.h。 |
| 类和结构体 | RuntimeAttrs | 用于保存算子属性。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/runtime\_attrs.h。 |
| 类和结构体 | Shape | Shape结构体用于描述一个tensor的shape。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/shape.h。 |
| 类和结构体 | StorageFormat | StorageFormat格式包括原始格式、运行时格式、补维规则。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/storage\_format.h。 |
| 类和结构体 | StorageShape | 该类描述了tensor的shape，包含两个信息：origin\_shape以及storage\_shape。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/storage\_shape.h。 |
| 类和结构体 | TensorData | 用于存储Tensor数据。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/tensor\_data.h。 |
| 类和结构体 | TensorPlacementUtils | 提供一组函数，用于判断TensorPlacement的位置。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/tensor\_data.h。 |
| 类和结构体 | Tensor | Tensor类用来描述一个tensor对象的信息以及行为，包含：shape信息、format信息、datatype信息以及tensor数据内容tensordata。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/tensor.h。 |
| 类和结构体 | TilingContext | 用于算子Tiling的上下文结构。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/tiling\_context.h。 |
| 类和结构体 | TilingData | 用于存储Tiling数据。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/tiling\_data.h。 |
| 类和结构体 | TypedContinuousVector | 本类继承自ContinuousVector类，与ContinuousVector类不同的是MutableData和GetData返回的是指定类型的地址，而不是void \*。因此称为Typed。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/continuous\_vector.h。 |
| 枚举 | TensorPlacement | 表达Tensor存储位置的枚举值。 头文件位于CANN软件安装后文件存储路径下的include/exe\_graph/runtime/tensor\_data.h。 |


#### ge命名空间


**表2 ge命名空间**

| 分类 | 数据结构/接口名称 | 功能描述 |
| --- | --- | --- |
| 类和结构体 | Allocator | 支持使用用户注册的外置allocator功能。 头文件位于CANN软件安装后文件存储路径下的include/ge/ge\_allocator.h。 |
| 类和结构体 | AscendString | 用于存储字符串。 头文件位于CANN软件安装后文件存储路径下的include/graph/ascend\_string.h。 库文件：libgraph.so。 |
| 类和结构体 | AutoMappingSubgraphIOIndexFuncRegister | 内部关联接口，插件适配API调用时间接调用，开发者不直接感知。 |
| 类和结构体 | FrameworkRegistry | 内部关联接口，插件适配API调用时间接调用，开发者不直接感知。 |
| 类和结构体 | IntegerChecker | IntegerChecker是一个模板类，带有模板参数T，用于检查一个整数是否在指定数据类型T的合法范围内。 头文件位于CANN软件安装后文件存储路径下的include/utils/extern\_math\_util.h。 |
| 类和结构体 | KernelLaunchInfo | KernelLaunchInfo类为开发者提供创建和管理下发给Device的任务接口，允许开发者设置或者获取当前待下发Device任务的相关Launch信息。 头文件位于CANN软件安装后文件存储路径下的include/graph/kernel\_launch\_info.h。 |
| 类和结构体 | ListTensorType | ListTensorType类用以定义输入或者输出支持的数据类型，是TensorType的封装，用于标识支持多个数据类型的情况。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 类和结构体 | MemBlock | 配合Allocator类使用，支持使用用户注册的外置allocator功能。 头文件位于CANN软件安装后文件存储路径下的include/ge/ge\_allocator.h。 |
| 类和结构体 | OpReceiver | 用于算子编写适配插件进行AI框架适配时，接收自定义算子的注册信息。 头文件位于CANN软件安装后文件存储路径下的include/register/register.h。 |
| 类和结构体 | OpRegistrationData | 用于算子编写适配插件进行AI框架适配时，进行映射关系注册。 头文件位于CANN软件安装后文件存储路径下的include/register/register.h。 |
| 类和结构体 | Promote | Promote类用于表示输出数据类型为输入或属性指定的数据类型间的提升类型。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 类和结构体 | Shape | 用于存储Tensor的shape信息。 头文件位于CANN软件安装后文件存储路径下的include/graph/tensor.h。 库文件：libgraph\_base.so。 |
| 类和结构体 | TensorDescInfo | 存储Tensor描述信息。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 类和结构体 | TensorDesc | 用于存取、管理Tensor描述信息。 头文件位于CANN软件安装后文件存储路径下的include/graph/tensor.h。 库文件：libgraph\_base.so。 |
| 类和结构体 | TensorType | TensorType类用以定义输入或者输出支持的数据类型。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 类和结构体 | Tensor | Tensor结构。 头文件位于CANN软件安装后文件存储路径下的include/graph/tensor.h 库文件：libgraph\_base.so |
| 类和结构体 | TypeUtils | 类型转换工具类。 头文件位于CANN软件安装后文件存储路径下的include/graph/utils/type\_utils.h。 |
| 函数 | AddOverflow | 该模板函数用于判断两个数值相加是否会发生溢出，并在不溢出的情况下返回正确的计算结果。 头文件位于CANN软件安装后文件存储路径下的include/utils/extern\_math\_util.h。 |
| 函数 | ConvertToAscendString | 模板函数，接受一个模板参数T，并将其转换为AscendString类型。这个函数的主要功能是将不同类型的字符串转换为AscendString类型。 头文件位于CANN软件安装后文件存储路径下的include/graph/operator\_reg.h |
| 函数 | ConvertToListAscendString | 定义了一个模板函数ConvertToListAscendString，用于将不同类型的字符串列表转换为AscendString类型的列表。 头文件位于CANN软件安装后文件存储路径下的include/graph/operator\_reg.h |
| 函数 | GetC0Format | 根据实际format获取C0 format的值。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetC0Value | 从实际format中解析出C0 format信息。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetFormatFromC0 | 根据传入的format和C0 format信息得到实际的format。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetFormatFromSub | 根据传入的主format和子format信息得到实际的format。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetFormatFromSubAndC0 | 根据传入的主format，子format和C0 format信息得到实际的format。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetFormatName | 根据传入的format类型，获取format的字符串描述。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetPrimaryFormat | 从实际format中解析出主format信息。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetSizeByDataType | 根据传入的data\_type，获取该data\_type所占用的内存大小。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetSizeInBytes | 根据传入的element\_count和data\_type，获取element\_count个该data\_type所占用的内存总大小。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | GetSubFormat | 从实际format中解析出子format信息。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | HasC0Format | 判断实际format中是否包含C0 format。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | HasSubFormat | 判断实际format中是否包含子format。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 函数 | MulOverflow | 该模板函数用于判断两个数值相乘是否会发生溢出，并在不溢出的情况下返回正确的计算结果。 头文件位于CANN软件安装后文件存储路径下的include/utils/extern\_math\_util.h。 |
| 类型定义 | ge::graphStatus | 返回码状态说明。 头文件位于CANN软件安装后文件存储路径下的include/graph/ge\_error\_codes.h。 |
| 枚举 | DataType | 数据类型枚举值。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 枚举 | Format | 数据格式枚举值。 头文件位于CANN软件安装后文件存储路径下的include/graph/types.h。 |
| 宏 | DECLARE\_ERRORNO | 错误码及描述注册宏。 头文件位于CANN软件安装后文件存储路径下的include/register/register\_error\_codes.h。 |


#### C接口

| 数据结构/接口名称 | 功能描述 |
| --- | --- |
| C\_DataType | 数据类型枚举值。 头文件位于CANN软件安装后文件存储路径下的include/graph/c\_types.h。 |
| C\_Format | 数据格式枚举值。 头文件位于CANN软件安装后文件存储路径下的include/graph/c\_types.h。 |
