内部关联接口
在进行算子原型注册、Tiling实现、shape推导过程中,使用到的外部开放接口中会调用到一些辅助数据结构和接口,称之为内部关联接口。开发者不会直接调用内部关联接口,此处仅作简单介绍。
CTilingDataClassFactory
CTilingDataClassFactory类用于注册Ascend C高阶API和用户自定义tiling结构,通过单例实现的工厂类,在TilingData结构注册中REGISTER_TILING_DATA_CLASS中使用。
函数名称 |
含义 |
---|---|
GetInstance |
获取CTilingDataClassFactory类的单例 |
RegisterTilingData |
注册op_type的tiling结构constructor至CTilingDataClassFactory工厂类 |
CreateTilingDataInstance |
根据算子名获取tiling结构 |
OpDef相关接口
原型注册相关类的一些非对外开放接口,包括OpDef, OpParamDef, OpAICoreConfig等,下述接口均为框架生成相关工程所需,用户无需关心。
类名 |
接口名 |
接口功能 |
---|---|---|
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)