Skip to content
版 本

asc_set_atomic_min

产 品 支 持 情 况

产 品是 否 支 持
Ascend 950PR/Ascend 950DT
Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品
Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品

功 能 说 明

头 文 件 路 径:"c_api/atomic/atomic.h"

设 置 对 后 续 的 从Unified Buffer/L0C Buffer/L1 Buffer到Global Memory的 数 据 传 输 开 启 原 子 比 较 取 小 操 作。数 据 类 型 支 持int8_t、int16_t、int32_t、bfloat16_t、half、float。

特 别 地,针 对Ascend 950PR/Ascend 950DT,不 支 持L1 Buffer到Global Memory的 通 路。

函 数 原 型

C++
__aicore__ inline void asc_set_atomic_min_int8()
__aicore__ inline void asc_set_atomic_min_int16()
__aicore__ inline void asc_set_atomic_min_bfloat()
__aicore__ inline void asc_set_atomic_min_float16()
__aicore__ inline void asc_set_atomic_min_int()
__aicore__ inline void asc_set_atomic_min_float()

参 数 说 明

返 回 值 说 明

流 水 类 型

PIPE_S

约 束 说 明

  • 使 用 结 束 后,建 议 通 过asc_set_atomic_none关 闭 原 子 最 小 操 作,以 免 影 响 后 续 相 关 指 令 功 能。
  • 针 对Ascend 950PR/Ascend 950DT,不 支 持L1 Buffer到Global Memory的 通 路。

调 用 示 例

C++
// total_length指参与计算的数据长度,dst是外部传入的int8_t类型的GM内存地址。
constexpr uint32_t total_length = 256;
__ubuf__ int8_t src0[total_length];
__ubuf__ int8_t src1[total_length];

asc_copy_ub2gm(dst, src0, total_length * sizeof(int8_t));
asc_sync_pipe(PIPE_MTE3);
asc_set_atomic_min_int8();
asc_copy_ub2gm(dst, src1, total_length * sizeof(int8_t));
asc_set_atomic_none();

结 果 示 例:

Text
输入数据src0:[1, 1, 1, ..., 1]  // int8_t类型
输入数据src1:[2, 2, 2, ..., 2]  // int8_t类型
输出数据dst:[1, 1, 1, ..., 1]   // int8_t类型

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