昇腾社区首页
中文
注册

内部关联接口

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

CTilingDataClassFactory

CTilingDataClassFactory类用于注册Ascend C高阶API和用户自定义tiling结构,通过单例实现的工厂类,在TilingData结构注册中REGISTER_TILING_DATA_CLASS中使用。

表1 CTilingDataClassFactory成员函数

函数名称

含义

GetInstance

获取CTilingDataClassFactory类的单例

RegisterTilingData

注册op_type的tiling结构constructor至CTilingDataClassFactory工厂类

CreateTilingDataInstance

根据算子名获取tiling结构

OpDef相关接口

原型注册相关类的一些非对外开放接口,包括OpDef, OpParamDef, OpAICoreConfig等,下述接口均为框架生成相关工程所需,用户无需关心。

表2 OpDef相关类及其成员函数

类名

接口名

接口功能

OpAICoreDef

GetTiling

获取Tiling信息。

GetCheckSupport

获取参数校验。

GetOpSelectFormat

获取推导函数。

GetOpSupportInfo

获取算子切分信息函数。

GetOpSpecInfo

获取算子额外信息供FE解析函数。

GetParamGeneralize

获取算子泛化函数。

SetOpSupportInfo

设置算子切分信息函数。

SetOpSpecInfo

设置算子额外信息供FE解析函数。

SetParamGeneralize

设置算子泛化函数。

OpDef

GetInferShape

获取Shape推导函数。

GetInferShapeRange

获取ShapeRange推导函数。

GetInferDataType

获取DataType推导函数。

OpDefFactory

OpDefRegister

注册算子。

OpCheckFuncHelper

-

算子相关函数检查,用来检测输入、输出shape等,如算子参数校验,推导回调函数等。

Tiling定义辅助接口

以下接口为Tiling定义辅助接口。AscendC提供了一系列Tiling类型定义宏,包含BEGIN_TILING_DATA_DEF、TILING_DATA_FIELD_DEF、TILING_DATA_FIELD_DEF_ARR、TILING_DATA_FIELD_DEF_STRUCT、REGISTER_TILING_DATA_CLASS。用户调用该系列宏会调用以下接口对tiling信息进一步处理,包含结构信息保留、字节对齐等。

// TilingDef类
void SaveToBuffer(void *pdata, size_t capacity);
std::vector<FieldInfo> GetFieldInfo() const;
const char *GetTilingClassName() const;
size_t GetDataSize() const;
void SetDataPtr(void *dataPtr);
void CheckAlignAndGenPlaceHolder(const char *name, size_t typeSize);
// FieldInfo类
FieldInfo(const char *dtype, const char *name)
FieldInfo(const char *dtype, const char *name, size_t arrSize)
FieldInfo(const char *dtype, const char *name, const char *structType,size_t structSize)