COPY_TILING_WITH_ARRAY
产 品 支 持 情 况
功 能 说 明
拷 贝 指 定 大 小 的 数 组 内 容 到 目 标 数 组 中,并 返 回 指 向 拷 贝 后 数 组 的 指 针。适 用 于 拷 贝 一 个 结 构 体 的 数 组 成 员 变 量 的 场 景。该 宏 将 指 定 数 组 拷 贝 至 栈 上,适 用 于 频 繁 访 问Tiling数 据 的 场 景,能 够 加 快 数 据 访 问 速 度。
函 数 原 型
Text
COPY_TILING_WITH_ARRAY(arr_type, arr_count, src_ptr, dst_ptr)
参 数 说 明
约 束 说 明
- 该 宏 需 在 算 子Kernel代 码 处 使 用,并 且 传 入 的dst_ptr参 数 无 需 声 明 类 型。
- 该 宏 需 要 和GET_TILING_DATA_PTR_WITH_STRUCT配 合 使 用,输 入 参 数src_ptr为GET_TILING_DATA_PTR_WITH_STRUCT获 取 到 的 指 针。
- 该 宏 获 取 到 的dst_ptr指 针 指 向 的 数 组 是 局 部 变 量,请 确 保 在 合 理 作 用 域 范 围 内 使 用。
- 暂 不 支 持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;
GET_TILING_DATA_PTR_WITH_STRUCT(AddCustomTilingData, tilingDataPtr, tiling);
if ASCEND_IS_AIV {
COPY_TILING_WITH_ARRAY(uint64_t, 2, tilingDataPtr->vectorTilingArray, vTilingArrayPtr);
op.Init(x, y, z, (*vTilingArrayPtr)[0], (*vTilingArrayPtr)[1]);
op.Process();
} else {
COPY_TILING_WITH_ARRAY(uint64_t, 2, tilingDataPtr->cubeTilingArray, cTilingArrayPtr);
op.Init(x, y, z, (*cTilingArrayPtr)[0], (*cTilingArrayPtr)[1]);
op.Process();
}
}