Skip to content
版 本

TILING_KEY_LIST

产 品 支 持 情 况

产 品

是 否 支 持

Ascend 950PR/Ascend 950DT

Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品

Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品

Atlas 200I/500 A2 推 理 产 品

x

Atlas 推 理 系 列 产 品AI Core

x

Atlas 推 理 系 列 产 品Vector Core

x

Atlas 训 练 系 列 产 品

x

功 能 说 明

TILING_KEY_LIST函 数 用 于 在 核 函 数 中 判 断 当 前 执 行 的TilingKey是 否 与Host侧 配 置 的 指 定TilingKey匹 配,从 而 标 识 满 足TilingKey == key1或TilingKey == key2条 件 的 分 支 逻 辑。

函 数 原 型

Text
TILING_KEY_LIST(key1,key2)

参 数 说 明

参 数

输 入/输 出

说 明

key

输 入

key表 示 某 个 核 函 数 的 分 支,必 须 是 非 负 整 数。

约 束 说 明

  • TILING_KEY_LIST运 用 于if和else if分 支,不 支 持else分 支,即 用TILING_KEY_LIST函 数 来 表 征N个 分 支,必 须 用N个TILING_KEY_LIST(key1,key2)来 分 别 表 示。
  • 支 持 传 入 两 个TilingKey,每 个TilingKey具 备 唯 一 性。
  • 使 用 该 接 口 时,必 须 设 置 默 认 的Kernel类 型,也 可 以 为 某 个TilingKey单 独 配 置Kernel类 型,该 配 置 会 覆 盖 默 认Kernel类 型。Kernel类 型 仅 支 持 配 置 为KERNEL_TYPE_MIX_AIC_1_1、KERNEL_TYPE_MIX_AIC_1_2。
  • 暂 不 支 持Kernel直 调 工 程。

调 用 示 例

Text
extern "C" __global__ __aicore__ void add_custom(__gm__ uint8_t *x, __gm__ uint8_t *y, __gm__ uint8_t *z, __gm__ uint8_t *workspace, __gm__ uint8_t *tiling)
{
    GET_TILING_DATA(tilingData, tiling);
    if (workspace == nullptr) {
        return;
    }
    KernelAdd op;
    KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_MIX_AIC_1_1);
    op.Init(x, y, z, tilingData.numBlocks, tilingData.totalLength, tilingData.tileNum);
    // 当TilingKey为1或2时,执 行Process1;为3或4时,执 行Process2
    if (TILING_KEY_LIST(1,2)) {
        op.Process1();
    } else if (TILING_KEY_LIST(3,4)) {
        KERNEL_TASK_TYPE(4, KERNEL_TYPE_MIX_AIC_1_2);
        op.Process2();
    } 
    // 其 他 代 码 逻 辑
    ...
    // 此 处 示 例 当TilingKey为3或4时,会 执 行ProcessOther
    if (TILING_KEY_LIST(3,4)) {
        op.ProcessOther();
    }
}

配 套 的Host侧Tiling函 数 示 例(伪 代 码):

Text
ge::graphStatus TilingFunc(gert::TilingContext* context)
{
    // 其 他 代 码 逻 辑
    ...
    if (context->GetInputShape(0) > 10) {
        context->SetTilingKey(1);
    } else if (some condition) {
        context->SetTilingKey(2);
    } else if (some condition) {
        context->SetTilingKey(3);
    } else if (some condition) {
        context->SetTilingKey(4);
    }
}

免 责 声 明:本 站 内 容 由 asc-devkit 仓 master 分 支 自 动 编 译 生 成,属 于 持 续 开 发 版 本,可 能 存 在 缺 陷,仅 供 预 览 与 参 考。如 需 稳 定 及 商 用 资 料,请 查 阅 官 方 昇 腾 社 区