Skip to content
版 本

asc_copy_l12l0a_mx

产 品 支 持 情 况

产 品是 否 支 持
Ascend 950PR/Ascend 950DT

功 能 说 明

将Mx scale矩 阵 从L1 Buffer搬 运 到L0A Buffer。

函 数 原 型

C++
__aicore__ inline void asc_copy_l12l0a_mx(uint64_t dst, __cbuf__ fp8_e8m0_t* src, uint16_t x_start_pos, uint16_t y_start_pos, uint8_t x_step, uint8_t y_step, uint16_t src_stride, uint16_t dst_stride)
__aicore__ inline void asc_copy_l12l0a_mx_sync(uint64_t dst, __cbuf__ fp8_e8m0_t* src, uint16_t x_start_pos, uint16_t y_start_pos, uint8_t x_step, uint8_t y_step, uint16_t src_stride, uint16_t dst_stride)

参 数 说 明

参 数 名输 入/输 出描 述
dst输 出目 的 操 作 数 的 地 址。
src输 入源 操 作 数(Mx scale矩 阵)的 起 始 地 址,数 据 类 型 为fp8_e8m0_t。
x_start_pos输 入源 操 作 数X轴 方 向 的 起 始 位 置,即M维 度 方 向,单 位 为1个 分 形(1个 单 位 代 表 一 个32B的 分 形)。
y_start_pos输 入源 操 作 数Y轴 方 向 的 起 始 位 置,即K维 度 方 向,单 位 为32B。
x_step输 入源 操 作 数X轴 方 向 搬 运 长 度,即M维 度 方 向,单 位 为1个 分 形(1个 单 位 代 表 一 个32B的 分 形)。取 值 范 围:[0, 255]。
y_step输 入源 操 作 数Y轴 方 向 搬 运 长 度,即K维 度 方 向,单 位 为32B。取 值 范 围:[0, 255]。
src_stride输 入源 操 作 数X轴 方 向 前 一 个 分 形 起 始 地 址 与 后 一 个 分 形 起 始 地 址 的 间 隔,单 位 为32B。
dst_stride输 入目 的 操 作 数X轴 方 向 前 一 个 分 形 起 始 地 址 与 后 一 个 分 形 起 始 地 址 的 间 隔,单 位 为32B。

返 回 值 说 明

流 水 类 型

PIPE_MTE1

约 束 说 明

  • scale矩 阵 的 分 形 固 定 为(16, 2, 16),对 应L0A Buffer的 分 形 为(16, 32, 16),占L0A Buffer地 址 的1 / 16,需 要 按 照 这 种 地 址 约 束 存 放 地 址。
  • dst(L0A Buffer的 地 址)的 数 据 类 型 支 持fp4x2_e2m1_t、fp4x2_e1m2_t、fp8_e5m2_t、fp8_e4m3fn_t,src的 数 据 类 型 支 持fp8_e8m0_t。
  • dst、src的 起 始 地 址 需 要32字 节 对 齐。

调 用 示 例

C++
__cbuf__ fp8_e8m0_t src[1024];
__ca__ fp8_e5m2_t dst[1024];
uint16_t x_start_pos = 0;
uint16_t y_start_pos = 0;
uint8_t x_step = 0;
uint8_t y_step = 0;
uint16_t src_stride = 8;
uint16_t dst_stride = 8;
uint64_t mx_dst_addr = static_cast<uint64_t>(reinterpret_cast<uintptr_t>(dst)) / 16;
asc_copy_l12l0a_mx(mx_dst_addr, src, x_start_pos, y_start_pos, x_step, y_step, src_stride, dst_stride);

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