GET_TILING_DATA_WITH_STRUCT
产 品 支 持 情 况
功 能 说 明
使 用 该 接 口 指 定 结 构 体 名 称,可 获 取 指 定 的tiling信 息,并 填 入 对 应 的Tiling结 构 体 中,此 函 数 会 以 宏 展 开 的 方 式 进 行 编 译。与GET_TILING_DATA的 区 别 是:GET_TILING_DATA只 能 获 取 默 认 注 册 的 结 构 体,该 接 口 可 以 根 据 指 定 的 结 构 体 名 称 获 取 对 应 的 结 构 体,常 用 于 针 对 不 同 的TilingKey注 册 了 不 同 结 构 体 的 情 况 下。
函 数 原 型
Text
GET_TILING_DATA_WITH_STRUCT(struct_name, tiling_data, tiling_arg)
参 数 说 明
约 束 说 明
- 本 函 数 需 在 算 子Kernel代 码 处 使 用,并 且 传 入 的tiling_data参 数 不 需 要 声 明 类 型。
- 暂 不 支 持Kernel直 调 工 程。
调 用 示 例
Text
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();
}
}