Skip to content
版 本

SetFixPipeConfig

产 品 支 持 情 况

产 品

是 否 支 持

Ascend 950PR/Ascend 950DT

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

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

Atlas 200I/500 A2 推 理 产 品

Atlas 推 理 系 列 产 品AI Core

x

Atlas 推 理 系 列 产 品Vector Core

x

Atlas 训 练 系 列 产 品

x

Kirin X90

Kirin 9030

功 能 说 明

DataCopy(CO1->GM、CO1->A1)过 程 中 进 行 随 路 量 化 时,通 过 调 用 该 接 口 设 置 量 化 流 程 中tensor量 化 参 数。

函 数 原 型

Text
template <typename T>
__aicore__ inline void SetFixPipeConfig(const LocalTensor<T>& reluPre, const LocalTensor<T>& quantPre, bool isUnitFlag = false)
template <typename T, bool setRelu = false>
__aicore__ inline void SetFixPipeConfig(const LocalTensor<T>& preData, bool isUnitFlag = false)

参 数 说 明

表 1 模 板 参 数 说 明

参 数 名

描 述

T

操 作 数 的 数 据 类 型。

setRelu

针 对 设 置 一 个tensor的 情 况,当setRelu为true时,设 置reluPre;反 之 设 置quantPre。setRelu当 前 仅 支 持 设 置 为false。

表 2 参 数 说 明

参 数 名 称

输 入/输 出

含 义

reluPre

输 入

源 操 作 数,relu操 作 时 参 与 计 算 的tensor,类 型 为LocalTensor,支 持 的TPosition为C2PIPE2GM。

reluPre为 预 留 参 数,暂 未 启 用,为 后 续 的 功 能 扩 展 做 保 留,传 入 一 个 空LocalTensor即 可。

quantPre

输 入

源 操 作 数,quant tensor,量 化 操 作 时 参 与 计 算 的tensor,类 型 为LocalTensor,支 持 的TPosition为C2PIPE2GM。

isUnitFlag

输 入

UnitFlag清 空 标 志 位,默 认 值 为false。通 过 以 内 存 块 为 粒 度 实 现 精 细 化 的 数 据 同 步,从 而 有 效 降 低 同 步 延 迟,提 升 系 统 整 体 性 能。当UnitFlag开 关 打 开 后, 对 于L0C中 的 每 个 内 存 块(512B),提 供 一 个 单 元 标 志 位,用 于 指 示 该 块 是 否 可 读 或 可 写。

  • false:关 闭UnitFlag配 置。
  • true:打 开UnitFlag配 置。

preData

输 入

支 持 设 置 一 个Tensor,通 过 开 关 控 制 是relu Tensor还 是quant Tensor,支 持 的TPosition为C2PIPE2GM。当 前 仅 支 持 传 入quant Tensor。

约 束 说 明

quantPre和reluPre必 须 是Fixpipe Buffer上 的Tensor。

返 回 值 说 明

调 用 示 例

完 整 示 例 可 参 考完 整 示 例

Text
__aicore__inline void SetFPC(const LocalTensor <int32_t>& reluPreTensor, const LocalTensor <int32_t>& quantPreTensor)
{
 
    AscendC::LocalTensor<uint64_t> workA1 = inQueueDeqA1.AllocTensor<uint64_t>();
    uint16_t deqSize = 128; // deq tensor的size
    AscendC::DataCopy(workA1, deqGlobal, deqSize); // deqGlobal为 量 化 系 数 的gm地 址
    AscendC::LocalTensor<uint64_t> deqFB = inQueueDeqFB.AllocTensor<uint64_t>(); // deq tensor在Fix上 的 地 址
    uint16_t fbufBurstLen = deqSize / 128;  // l1->fix, burst_len unit is 128Bytes
    AscendC::DataCopyParams dataCopyParams(1, fbufBurstLen, 0, 0);
    AscendC::DataCopy(deqFB, workA1, dataCopyParams); 通 过DataCopy搬 入C2PIPE2GM。
    AscendC::SetFixPipeConfig(deqFB); // 设 置 量 化tensor
    AscendC::PipeBarrier<PIPE_FIX>();
}

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