昇腾社区首页
中文
注册
开发者
下载

内部关联接口

在进行算子原型注册、Tiling实现、shape推导过程中,使用到的外部开放接口中会调用到一些辅助数据结构和接口,称之为内部关联接口。开发者不会直接调用内部关联接口,此处仅作简单介绍。

KernelContext类

本类是对底层数据结构KernelRunContext的包装,包含kernel执行时所需的算子输入、输出个数信息以及输入输出数据信息、compute_node_info和kernel_extend_info。

表1 KernelContext类成员函数

接口名

接口功能

GetInput

获取输入的Chain指针。Chain是一个可以用来保存任意类型数据的类。

GetInputNum

获取kernel的输入数量。

GetInputPointer

获取输入数据的指针,本函数首先获取输入Chain,然后从输入Chain中获取指针。

GetInputStrPointer

获取输入字符串的指针,本函数首先获取输入Chain,然后从输入Chain中获取指针。

GetInputValue

获取输入数据的值,本函数首先获取输入Chain,然后从输入Chain中获取值。

GetOutput

获取输出的Chain指针。

GetOutput2

获取输出的Chain指针。

GetOutputNum

获取kernel的输出数量。

GetOutputPointer

获取输出数据的指针,本函数首先获取输出Chain,然后从Chain中获取指针。

GetContext

获取底层的context结构体。

GetKernelExtend

获取kernel扩展信息的指针。

GetComputeNodeExtend

获取计算节点信息的指针。

MutableInput

获取输入的Chain指针。

MutableInputPointer

获取输入数据的指针,本函数首先获取输入Chain,然后从输入Chain中获取指针。

IsInlineSize

根据数据的长度判断一个数据是否会被inline存储,所谓inline存储是指此数据保存在context中时不需要单独分配内存。

TilingParseContext类

用于TilingParse所需的信息保存在本类中,本类为编写算子的TilingParse函数时提供上下文信息,在TilingParse时可以从本类中获取所需的信息。

表2 TilingParseContext类成员函数

接口名

接口功能

GetCompiledJson

获取算子编译产生的JSON字符串。

GetCompiledInfo

获取CompiledInfo实例。

GetPlatformInfo

获取fe::PlatFormInfos指针。

Chain类

Chain是一个可以用来保存任意类型数据的类。通过其Set接口保存数据,通过GetPointer或者GetValue方法获取保存的数据。

表3 Chain类成员函数

接口名

接口功能

GetPointer

获取指向Chain中保存数据的指针。

GetValue

获取Chain中保存的数据的值。

Set

将数据设置到Chain中。设置数据指针时,会尝试调用deleter将原有保存在Chain的数据删除。

SetWithDefaultDeleter

将数据设置到Chain中。设置数据指针时,会尝试调用deleter将原有保存在Chain的数据删除。

HasDeleter

判断当前Chain中保存的数据是否有deleter。

ContinuousBuffer类

ContinuousBuffer类用于连续存储任意类型的数据,每个数据被转成uint8_t数组进行存储,每个存储单元称为一个buffer。ContinuousBuffer使用两个属性来描述被存储的数据,分别是存储buffer的个数以及每个buffer对应的内存偏移量offsets_。每个buffer在内存上是连续的。

表4 ContinuousBuffer类成员函数

接口名

接口功能

GetNum

获取buffer的数量。

GetTotalLength

获取本实例的总长度。

Get

获取buffer指针、长度信息。

KernelExtendInfo类

本类是用于保存的kernel运行时的额外信息,包括kernel的名字、类型、用于profiling注册的kernel type的index以及计算节点名的index。

表5 KernelExtendInfo类成员函数

接口名

接口功能

GetKernelName

获取kernel name。

SetKernelName

设置kernel name。

GetKernelType

获取kernel type。一个算子可以对应多个kernel,也就对应多个kernel type。

SetKernelType

设置kernel type。

SetKernelTypeIdx

设置kernel_type_idx_,用于profiling。profiling时设置的kernel type字符串对应的idx,用idx代替kernel type字符串作为标识,提升速度。

SetNodeNameIdx

设置compute_node_name_idx_,用于profiling,profiling时,用idx代替node name字符串作为标识,提升速度。

GetNodeNameIdx

获取compute_node_name_idx_,用于profiling。

GetKernelTypeIdx

获取kernel_type_idx_,用于profiling。

TensorOperateType

enum TensorOperateType {
  kGetTensorAddress,  ///< 获取Tensor的地址
  kFreeTensor,        ///< 释放Tensor
  kPlusShareCount,    ///< 共享Tensor
  kTensorOperateType
};

StructSizeInfoBase类

StructSizeInfoBase类用来存放、获取Ascend C高阶API和用户自定义的tiling结构体大小,通过单例实现一个结构体信息库。

表6 StructSizeInfoBase类成员函数

函数名称

含义

GetInstance

获取StructSizeInfoBase类的单例。

SetStructSize

设置高阶API/用户自定义tiling结构大小。

GetStructSize

获取高阶API/用户自定义tiling结构大小。

TilingDataStructBase类

TilingDataStructBase的类,用于记录Tiling结构体构造过程信息。提供以下接口:

表7 TilingDataStructBase类成员函数

函数名称

含义

GetInstance

获取TilingDataStructBase类的单例。

RecordTilingStruct

用于框架检查不同算子注册同名不同结构tiling结构体情况,若出现则会打印warning信息。

OpExecuteContext类

本类用于保存图模式下调用单算子执行API场景下的上下文。

表8 OpExecuteContext类成员函数

函数名称含义

含义

GetInputTensor

获取指定索引输入的Tensor。

GetOptionalInputTensor

获取指定索引的可选输入的Tensor。

GetDynamicInputTensor

获取指定索引的动态个数输入的Tensor。

GetRequiredInputTensor

获取指定索引的必选输入的Tensor。

GetOutputTensor

获取指定索引输出的Tensor。

GetDynamicOutputTensor

获取指定索引的动态个数输出的Tensor。

GetRequiredOutputTensor

获取指定索引的必选输出的Tensor。

GetStream

获取下发算子的流信息。

GetOpExecuteFunc

获取多kernel算子的执行回调函数。

MallocWorkspace

分配workspace内存。

FreeWorkspace

释放workspace内存。

GetDeterministic

获取确定性计算配置选项。

GetAllowHf32

获取allow_hf32配置选项。

GetPrecisionMode

获取精度模式配置选项。

OpImplSpaceRegistryV2类

本类用于保存算子交付件,用于管理、隔离不同离线模型、默认安装目录下不同版本的算子交付件。

表9 OpImplSpaceRegistryV2类成员函数

接口名

接口功能

OpImplSpaceRegistryV2

OpImplSpaceRegistryV2构造函数。

~OpImplSpaceRegistryV2

OpImplSpaceRegistryV2析构函数。

AddSoToRegistry

读取so路径,解析so里包含的算子交付件。

GetOpImpl

获取该版本下的获取某个算子类型的所有交付件。

DefaultOpImplSpaceRegistryV2类

单例类,用于管理默认安装路径下的算子交付件注册中心,称之为默认注册中心,一个进程中只有唯一一份。

表10 DefaultOpImplSpaceRegistryV2类成员函数

函数名称含义

含义

GetSpaceRegistry

获取默认注册中心的space registry,space registry对应OpImplSpaceRegistryV2类对象。

SetSpaceRegistry

设置默认注册中心的space registry,space registry对应OpImplSpaceRegistryV2类对象。

ClearSpaceRegistry

清空当前默认注册中心里保存的的所有space registry。

OppSoDesc类

本类用于组织算子交付件的so路径以及so归属哪种类型的包(内置包或者自定义算子包)。

表11 OppSoDesc类成员函数

函数名称含义

含义

OppSoDesc

So描述信息的构造函数,包含一个输入so路径以及so的描述信息。

OppSoDesc

So描述信息的构造函数,包含一组输入so路径以及该组so的描述信息。

OppSoDesc

So描述信息的移动构造函数

GetSoPaths

获取当前So描述信息中的so路径。

GetPackageName

获取当前So描述信息中的包名。

OppPackageUtils类

本类用于按照优先级加载所有的安装目录下的so,优先级:自定义算子 > 内置安装目录算子。

表12 OppPackageUtils类成员函数

函数名称含义

含义

LoadAllOppPackage

静态成员方法,加载所有的安装目录下的so。

OppImplVersionTag类

enum class OppImplVersionTag {
 kOpp,
 kOppKernel,
 // add new version definitions here
 kVersionEnd = 20
};

OpImplFunctions类

本类用于保存算子注册的Shape/ShapeRange/DataType推导、Tiling计算、值依赖等信息,不可扩展。

表13 OpImplFunctions类成员函数

函数名称含义

含义

operator=

拷贝赋值函数

HasDataDependency

判断算子是否注册了InferShape值依赖,表示在Shape推导时依赖输入的值。

IsInputDataDependency

判断算子的第index个输入是否为InferShape值依赖,其中index是算子的原型输入顺序。

SetInputDataDependency

设置算子的第index个输入为InferShape值依赖,其中index是算子的原型输入顺序。

HasHostInput

判断算子是否注册了输入地址需要是一个host地址。

IsHostInput

判断算子的第index个输入是否需要是一个host地址,其中index是算子的原型输入顺序。

SetHostInputs

设置算子的第index个输入需要是一个host地址,其中index是算子的原型输入顺序。

HasTilingInputDataDependency

判断算子是否注册了Tiling值依赖,表示算子在Tiling计算时依赖输入的值。

IsTilingInputDataDependency

判断算子的第index个输入是否为Tiling值依赖,其中index是算子的原型输入顺序。

SetTilingInputDataDependency

设置算子的第index个输入为TTiling值依赖,其中index是算子的原型输入顺序。

IsSupportTilingDependencyPlacement

判断算子是否支持入参指定的Tiling计算所在的设备类型。

SetTilingDependencyPlacement

设置算子Tiling计算所在的设备类型,算子注册了Tiling值依赖的场景下需要设置。

IsOutputShapeDependOnCompute

判断算子输出shape是否需要在计算完成后才能获取。

IsOutputShapeDependOnCompute

判断算子的第index个输出shape是否需要在计算完成后才能获取,其中index是算子的原型输入顺序。

SetOutputShapeDependOnCompute

设置算子的第index个输出shape需要在计算完成后才能获取,其中index是算子的原型输入顺序。

OpImplFunctionsV2类

OpImplFunctions的子类,可扩展,本类用于保存算子注册的GenerateTask、CheckSupport等信息。

表14 OpImplFunctionsV2类成员函数

函数名称含义

含义

OpImplFunctionsV2

默认构造函数

operator=

拷贝赋值函数