---
title: 内部关联接口
description: "在进行算子原型注册、Tiling实现、shape推导过程中，使用到的外部开放接口中会调用到一些辅助数据结构和接口，称之为内部关联接口。开发者不会直接调用内部关联接口，此处仅作简单介绍。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_1205.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_1205.html
indexId: b45793918bc01a17aec9da92437ffdb456ebe3796492bd5802dc6a80a37fb8bd76
---
# 内部关联接口

在进行算子原型注册、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信息。 |
| OpAICoreDef | GetCheckSupport | 获取参数校验。 |
| OpAICoreDef | GetOpSelectFormat | 获取推导函数。 |
| OpAICoreDef | GetOpSupportInfo | 获取算子切分信息函数。 |
| OpAICoreDef | GetOpSpecInfo | 获取算子额外信息供FE解析函数。 |
| OpAICoreDef | GetParamGeneralize | 获取算子泛化函数。 |
| OpAICoreDef | SetOpSupportInfo | 设置算子切分信息函数。 |
| OpAICoreDef | SetOpSpecInfo | 设置算子额外信息供FE解析函数。 |
| OpAICoreDef | SetParamGeneralize | 设置算子泛化函数。 |
| OpDef | GetInferShape | 获取Shape推导函数。 |
| OpDef | GetInferShapeRange | 获取ShapeRange推导函数。 |
| OpDef | 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)
```


#### OpLib注册辅助接口

用于OpLib注册的辅助接口，包括OpBinInfo类及相关成员函数等，OpBinInfo类及相关成员函数均为框架生成相关工程所需，开发者无需关心。

| 类名 | 接口名 | 接口功能 |
| --- | --- | --- |
| OpBinInfo | OpBinInfo | OpBinInfo类的构造函数。 |
| OpBinInfo | Generate | 解压自定义算子工程的库文件。 |
| OpBinInfo | Check | 校验是否为动态库类型。 |
