跳到主要内容

内部关联接口

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

CTilingDataClassFactory

CTilingDataClassFactory类用于注册AscendC高阶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相关类及其成员函数

类名接口名接口功能
OpAICoreDefGetTiling获取Tiling信息。
OpDefGetInferShape获取Shape推导函数。
OpDefGetInferDataType获取DataType推导函数。
OpDefFactoryOpDefRegister注册算子。

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)