跳到主要内容

基础数据结构和接口列表

本文档提供了进行算子开发和图开发时依赖的基础数据结构和接口说明,按照命名空间进行分类:

  • ge(Graph Engine)

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

  • gert(GE Runtime)

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

gert命名空间

表1 gert命名空间

分类数据结构/接口名称功能描述
类和结构体AnchorInstanceInfo用来描述一个算子的IR定义原型的输入信息与实际输入之间的关系。
类和结构体CompileTimeTensorDesc用于描述编译时的Tensor描述信息,包含dtype信息以及format信息。
类和结构体ComputeNodeInfo用于将算子的相关编译信息进行序列化保存,以便可以在图执行阶段能够高效地获取这些信息。
类和结构体ContinuousVectorVector在内存中开辟一块连续的空间,用于存储数据的描述信息以及实际的数据元素,元素类型为ContinuousVector结构。
类和结构体ContinuousVector本类是一个POD类,在内存中开辟一块连续的空间用于存储描述信息以及实际内存数据。
类和结构体ExpandDimsTypeExpandDimsType类基于补维后的shape,描述了补维规则。
类和结构体ExtendedKernelContextInferShapeContextTilingContext等的基类,ExtendedKernelContext中提供的方法如获取算子type、name、属性等接口均可以在InferShape、Tiling时调用。
类和结构体InferDataTypeContext用于datatype推导的上下文结构。
类和结构体InferShapeContext用于shape推导的上下文结构。
类和结构体InferShapeRangeContext用于shape range推导的上下文结构。
类和结构体OpImplRegisterV2OpImplRegisterV2类作为注册接口类,提供了一系列算子原型注册接口,供开发者注册指定算子类型的Tiling函数、Infershape函数、私有属性等信息。开发者调用算子原型注册接口进行注册时会间接使用到该类。
类和结构体RangeRange类用于描述一个对象的上下界。
类和结构体RuntimeAttrs用于保存算子属性。
类和结构体ShapeShape结构体用于描述一个tensor的shape。
类和结构体StorageFormatStorageFormat格式包括原始格式、运行时格式、补维规则。
类和结构体StorageShape该类描述了tensor的shape,包含两个信息:origin_shape以及storage_shape。
类和结构体TilingData用于存储Tensor数据。
类和结构体TensorPlacementUtils提供一组函数,用于判断TensorPlacement的位置。
类和结构体TensorTensor类用来描述一个tensor对象的信息以及行为,包含:shape信息、format信息、datatype信息以及tensor数据内容tensordata。
类和结构体TilingContext用于算子Tiling的上下文结构。
类和结构体TilingData用于存储Tiling数据。
类和结构体TypedContinuousVector本类继承自ContinuousVector类,与ContinuousVector类不同的是MutableData和GetData返回的是指定类型的地址,而不是void *。因此称为Typed。
枚举TensorPlacement表达Tensor存储位置的枚举值。

ge命名空间

表2 ge命名空间

分类数据结构/接口名称功能描述
类和结构体Allocator支持使用开发者注册的外置allocator功能,所在头文件位于CANN软件安装后文件存储路径下的“include/ge/ge_allocator.h”路径。
类和结构体AscendString用于存储字符串。 - 头文件位于CANN软件安装后文件存储路径下的include/graph/ascend_string.h - 库文件:libgraph.so
类和结构体AttrValue用于存储属性值。 - 头文件位于CANN软件安装后文件存储路径下的include/graph/attr_value.h - 库文件:libgraph_base.so
类和结构体AutoMappingSubgraphIOIndexFuncRegister内部关联接口,插件适配API调用时间接调用,开发者不直接感知。
类和结构体FrameworkRegistry内部关联接口,插件适配API调用时间接调用,开发者不直接感知。
类和结构体InferenceContext获取推理上下文对象,并设置相应对象的形状和数据类型,主要用于资源类算子。
类和结构体InferFormatFuncRegister算子InferFormat函数注册接口,此接口被其他头文件引用,一般不用由算子开发者直接调用。
类和结构体InferShapeFuncRegister算子InferShape函数注册接口,此接口被其他头文件引用,一般不用由算子开发者直接调用。
类和结构体InferValueRangeFuncRegister算子InferValueRangeFuncRegister函数注册接口,此接口被其他头文件引用,一般不由算子开发者直接调用。
类和结构体ListTensorTypeListTensorType类用以定义输入或者输出支持的数据类型,是TensorType的封装,用于标识支持多个数据类型的情况。
类和结构体MemBlock配合Allocator类使用,支持使用开发者注册的外置allocator功能,所在头文件位于CANN软件安装后文件存储路径下的“include/ge/ge_allocator.h”路径。
类和结构体OperatorCreatorRegister算子注册接口,注册一个算子原型,此接口被其他头文件引用,一般不用由算子开发者直接调用。
类和结构体OperatorFactory内部关联接口,此接口被其他头文件引用,一般不用由算子开发者直接调用。
类和结构体Operator算子类。 - 头文件位于CANN软件安装后文件存储路径下的include/graph/operator.h - 库文件:libgraph.so
类和结构体OpReceiver用于算子编写适配插件进行AI框架适配时,进行映射关系注册。
类和结构体OpRegistrationData用于算子编写适配插件进行AI框架适配时,进行映射关系注册。
类和结构体PromotePromote类用于表示输出数据类型为输入或属性指定的数据类型间的提升类型。
类和结构体ShapeAndType可设置、获取相应对象的形状和数据类型。
类和结构体Shape用于存储Tensor的shape信息。 - 头文件位于CANN软件安装后文件存储路径下的include/graph/tensor.h - 库文件:libgraph_base.so
类和结构体TensorDescInfo存储Tensor描述信息。
类和结构体TensorDesc用于存取、管理Tensor描述信息。 - 头文件位于CANN软件安装后文件存储路径下的include/graph/tensor.h - 库文件:libgraph_base.so
类和结构体TensorTypeTensorType类用以定义输入或者输出支持的数据类型。
类和结构体TensorTensor结构。 - 头文件位于CANN软件安装后文件存储路径下的include/graph/tensor.h - 库文件:libgraph_base.so
类和结构体TypeUtils类型转换工具类。
类和结构体VerifyFuncRegister算子verifyFunc函数注册接口,此接口被其他头文件引用,一般不用由算子开发者直接调用。
函数ConvertToAscendString模板函数,接受一个模板参数T,并将其转换为AscendString类型。这个函数的主要功能是将不同类型的字符串转换为AscendString类型。
函数ConvertToListAscendString定义了一个模板函数ConvertToListAscendString,用于将不同类型的字符串列表转换为AscendString类型的列表。
函数GetC0Format根据实际format获取C0 format的值。
函数GetC0Value从实际format中解析出c0 format信息。
函数GetFormatFromC0根据传入的format和c0format信息得到实际的format。
函数GetFormatFromSub根据传入的主format和子format信息得到实际的format。
函数GetFormatFromSubAndC0根据传入的主format,子format和c0format信息得到实际的format。
函数GetFormatName根据传入的format类型,获取format的字符串描述。
函数GetPrimaryFormat从实际format中解析出主format信息。
函数GetSizeByDataType根据传入的data_type,获取该data_type所占用的内存大小。
函数GetSizeInBytes根据传入的element_count和data_type,获取element_count个该data_type所占用的内存总大小。
函数GetSubFormat从实际format中解析出子format信息。
函数HasC0Format判断实际format中是否包含C0 format。
函数HasSubFormat判断实际format中是否包含子format。
类型定义ge::graphStatus返回码状态说明。
枚举DataType数据类型枚举值。
枚举Format数据格式枚举值
BROADCAST_INFER提供公共函数宏封装,供算子开发者开发InferShape函数。该函数基于2个输入的shape,设置输出的shape。该宏只是设置shape,未设置dtype。
COMMON_INFER_FUNC_REG注册算子的InferShape函数。
DECLARE_ERRORNO错误码及描述注册宏。
ELMTWISE_INFER_SHAPEANDTYPE提供公共函数宏封装,供算子开发者开发InferShape函数。该函数基于输入的shape和dtype,设置输出的shape和dtype。
IMPLEMT_COMMON_INFERFUNC封装算子的Common_InferShape函数。
IMPLEMT_INFERFORMAT_FUNC封装算子的inferFormat函数。
IMPLEMT_INFERFUNC封装算子的InferShape函数。
IMPLEMT_VERIFIER封装算子的Verify函数。
INFER_FORMAT_FUNC_REG注册算子的InferFormat实现。
INFER_FUNC_REG注册算子的InferShape函数。
原型定义接口(REG_OP)原型定义接口。
原型定义衍生接口说明原型定义衍生接口。
VERIFY_FUNC_REG注册算子的Verify函数。