GET\_TILING\_DATA\_WITH\_STRUCT
===============================

#### 函数功能

使用该接口指定结构体名称，可获取指定的tiling信息，并填入对应的Tiling结构体中，此函数会以宏展开的方式进行编译。与[GET\_TILING\_DATA](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/cannkit-get-tiling-data)的区别是：只能获取默认注册的结构体，该接口可以根据指定的结构体名称获取对应的结构体，常用于针对不同的TilingKey注册了不同结构体的情况下。

#### 函数原型

GET\_TILING\_DATA\_WITH\_STRUCT(struct\_name, tiling\_data, tiling\_arg)

#### 参数说明

| 参数 | 输入/输出 | 说明 |
| :-- | :-- | :-- |
| struct\_name | 输入 | 指定的结构体名称。 |
| tiling\_data | 输出 | 返回指定Tiling结构体变量。 |
| tiling\_arg | 输入 | 此参数为算子入口函数处传入的tiling参数。 |

#### 支持的型号

Kirin9020系列处理器

KirinX90系列处理器

#### 约束说明

*   本函数需在算子kernel代码处使用，并且传入的tiling\_data参数不需要声明类型。
    
*   暂不支持kernel直调工程。
    

#### 调用示例

extern "C" \_\_global\_\_ \_\_aicore\_\_ void add\_custom(\_\_gm\_\_ uint8\_t \*x, \_\_gm\_\_ uint8\_t \*y, \_\_gm\_\_ uint8\_t \*z, \_\_gm\_\_ uint8\_t \*tiling)
{
    KernelAdd op;
    if (TILING\_KEY\_IS(1)) {
        GET\_TILING\_DATA\_WITH\_STRUCT(Add\_Struct\_Special, tilingData, tiling); // 使用算子指定注册的结构体
    op.Init(x, y, z, tilingData.totalLengthSpecial, tilingData.tileNumSpecial);
    } else {
        GET\_TILING\_DATA(tilingData, tiling); // 使用算子默认注册的结构体
    op.Init(x, y, z, tilingData.totalLength, tilingData.tileNum);
    }
    if (TILING\_KEY\_IS(1)) {
        op.Process();
    }  else  if (TILING\_KEY\_IS(2)) {
        op.Process();
    } else  if (TILING\_KEY\_IS(3)) {
        op.Process();
    }
}