Skip to content
版 本

C API

C API文 档 目 录,整 体 使 用 时 可 以 引 入asc_simd.h,C API列 表 如 下:

数 据 结 构

结 构 名说 明
asc_load3d_v2_configLoad3Dv2接 口 的repeat参 数。
asc_store_atomic_config原 子 操 作 启 用 位 与 原 子 操 作 类 型 的 值。
asc_fill_value_configfill_value的 初 始 化 参 数 结 构 体,包 含asc_fill_l0a/asc_fill_l0b/asc_fill_l1接 口 需 要 配 置 的 各 种 初 始 化 参 数。
asc_l13d_fmatrix_config用 于 设 置asc_copy_l12l0a/asc_copy_l12l0b3D格 式 搬 运 接 口 的Feature map属 性 参 数。
asc_ndim_pad_count_config用 于asc_set_ndim_pad_count接 口 中,设 置asc_ndim_copy_gm2ub接 口 的 各 个 维 度 左 右 侧 的padding元 素 个 数。

矢 量 计 算

矢 量 计 算 类API,单 独 使 用 时 可 以 引 入vector_compute.h,此 类API列 表 如 下:

API名 称说 明
asc_get_cmp_mask获 取Compare操 作 的 比 较 结 果。
asc_set_cmp_mask为Select操 作 设 置 用 于 选 择 的 掩 码。
asc_get_rsvd_count获 取GatherMask操 作 后 剩 余 的 元 素 数 量。
asc_set_mask_count设 置Mask模 式 为Counter模 式。
asc_set_mask_norm设 置Mask模 式 为Normal模 式。
asc_set_vector_mask设 置Mask值。
asc_add按 元 素 求 和。
asc_add_scalar矢 量 内 每 个 元 素 与 标 量 求 和。
asc_sub按 元 素 求 差。
asc_sub_scalar矢 量 内 每 个 元 素 与 标 量 求 差。
asc_mul按 元 素 求 积。
asc_mul_scalar矢 量 内 每 个 元 素 与 标 量 求 积。
asc_div按 元 素 求 商。
asc_exp按 元 素 取 自 然 指 数。
asc_relu按 元 素 做 线 性 整 流Relu。
asc_max按 元 素 求 最 大 值。
asc_max_scalar矢 量 内 每 个 元 素 与 标 量 求 最 大 值。
asc_min按 元 素 求 最 小 值。
asc_datablock_reduce_sum对 每 个DataBlock内 所 有 元 素 求 和。
asc_datablock_reduce_max对 每 个DataBlock内 所 有 元 素 求 最 大 值。
asc_datablock_reduce_min对 每 个DataBlock内 所 有 元 素 求 最 小 值。
asc_repeat_reduce_sum对 每 个Repeat内 所 有 元 素 求 和。
asc_repeat_reduce_max对 每 个Repeat内 所 有 元 素 求 最 大 值。
asc_repeat_reduce_min对 每 个Repeat内 所 有 元 素 求 最 小 值。
asc_get_reduce_max_cnt获 取 执 行asc_repeat_reduce_max操 作 后 的 最 大 值,以 及 第 一 个 最 大 值 时 的 索 引。
asc_get_reduce_min_cnt获 取 执 行asc_repeat_reduce_min操 作 后 的 最 小 值,以 及 第 一 个 最 小 值 时 的 索 引。
asc_brcb将 源 操 作 数 中 的 每 一 个 数 填 充 到 目 的 操 作 数 的 一 个DataBlock中。
asc_duplicate将 一 个 变 量 或 立 即 数 填 充 到 一 个 矢 量 中。
asc_select根 据 掩 码,从 两 个 源 操 作 数 中 选 取 元 素,输 出 到 目 的 操 作 数。
asc_bfloat162float数 据 类 型 转 换。将bfloat16_t类 型 的 数 据 转 换 为float类 型。
asc_bfloat162int32数 据 类 型 转 换。将bfloat16_t类 型 的 数 据 转 换 为int32_t类 型。
asc_float2bfloat16数 据 类 型 转 换。将float类 型 的 数 据 转 换 为bfloat16_t类 型。
asc_float2float数 据 类 型 转 换。将float类 型 的 数 据 转 换 为float类 型。
asc_float2half数 据 类 型 转 换。将float类 型 的 数 据 转 换 为half类 型。
asc_half2float数 据 类 型 转 换。将half类 型 的 数 据 转 换 为float类 型。
asc_half2int4数 据 类 型 转 换。将half类 型 的 数 据 转 换 为int4b_t类 型。
asc_half2int8数 据 类 型 转 换。将half类 型 的 数 据 转 换 为int8_t类 型。
asc_half2int16数 据 类 型 转 换。将half类 型 的 数 据 转 换 为int16_t类 型。
asc_half2int32数 据 类 型 转 换。将half类 型 的 数 据 转 换 为int32_t类 型。
asc_int42half数 据 类 型 转 换。将int4b_t类 型 的 数 据 转 换 为half类 型。
asc_int82half数 据 类 型 转 换。将int8_t类 型 的 数 据 转 换 为half类 型。
asc_uint82half数 据 类 型 转 换。将uint8_t类 型 的 数 据 转 换 为half类 型。
asc_int162float数 据 类 型 转 换。将int16_t类 型 的 数 据 转 换 为float类 型。
asc_int322int16数 据 类 型 转 换。将int32_t类 型 的 数 据 转 换 为int16_t类 型。
asc_int322int64数 据 类 型 转 换。将int32_t类 型 的 数 据 转 换 为int64_t类 型。
asc_int642int32数 据 类 型 转 换。将int64_t类 型 的 数 据 转 换 为int32_t类 型。
asc_deq_int162b8将int16_t类 型 转 换 为int8_t或uint8_t类 型,并 将 数 据 存 放 在 每 个DataBlock的 上 半 块 或 下 半 块。
asc_set_deq_scale设 置DEQSCALAR寄 存 器 的 值。
asc_eq比 较src0与src1在 对 应 索 引 位 置 的 元 素 大 小。若 比 较 结 果 为 真,则 输 出 结 果 的 对 应 比 特 位 设 为1,否 则 设 为0。
asc_transpose用 于 实 现16*16的 二 维 矩 阵 数 据 块 转 置。
asc_sqrt对 元 素 进 行 开 方。
asc_lt按 元 素 判 断src0 < src1是 否 成 立,若 成 立 则 输 出 结 果 上 的 对 应 比 特 位 为1,否 则 为0。
asc_ne_scalar按 元 素 判 断 是 否 不 等 于 输 入 标 量,若 成 立 则 输 出 结 果 上 的 对 应 比 特 位 为1,否 则 为0。
asc_gather_datablock根 据 偏 移 地 址 按 照DataBlock的 粒 度 将 源 操 作 数 收 集 到 目 的 操 作 数 中。
asc_int162half数 据 类 型 转 换。将int16_t类 型 的 数 据 转 换 为half类 型。
asc_rcp执 行 矢 量 的 取 倒 数 运 算。
asc_shiftright对 源 操 作 数 中 的 每 个 元 素 执 行 右 移。
asc_mul_add执 行 矢 量 的 乘 加 运 算。
asc_eq_scalar执 行 矢 量 与 标 量 的 比 较 运 算,如 果 值 相 等 则 输 出1,否 则 输 出0。
asc_gather将 源 操 作 数 按 照 给 定 的 偏 移 按 元 素 收 集 到 目 的 操 作 数 中。
asc_min_scalar源 操 作 数 矢 量 逐 元 素 与 标 量 相 比,取 较 小 值。
asc_gt按 元 素 比 较 两 个 矢 量 的 大 小 关 系,若 比 较 后 的 结 果 为 真,则 输 出 结 果 的 对 应 比 特 位 为1,否 则 为0。
asc_vdeq_int162b8将int16_t类 型 转 换 为int8_t或uint8_t类 型,并 将 数 据 存 放 在 每 个DataBlock的 上 半 块 或 下 半 块。
asc_int322float将int32_t类 型 数 据 转 换 为float类 型。
asc_abs按 元 素 取 绝 对 值。
asc_add_relu按 元 素 求 和,再 进 行Relu计 算(结 果 和0对 比 取 较 大 值),并 提 供 转 换 最 终 结 果 的 数 据 类 型 的 功 能(s162s8、f322f16、f162s8)。
asc_and执 行 矢 量 与 运 算。
asc_axpy源 操 作 数src中 每 个 元 素 与 标 量value求 积 后 和 目 的 操 作 数dst中 的 对 应 元 素 相 加。
asc_bitsortScore和Index分 别 存 储 在src0和src1中,按Score进 行 排 序(Score大 的 元 素 排 前 面),排 序 后 的Score与 其 对 应 的Index一 起 以(Score,Index)的 结 构 存 储 在dst中。
asc_deq_int322half对 输 入 的int32_t类 型 的 数 据 按 元 素 做 量 化 并 转 换 为half类 型。
asc_float2int16将float类 型 数 据 转 换 为int16_t类 型。
asc_float2int32将float类 型 数 据 转 换 为int32_t类 型。
asc_float2int64将float类 型 数 据 转 换 为int64_t类 型。
asc_geGe(greater than or equal to),逐 元 素 比 较src0 >= src1是 否 成 立,成 立 则 输 出 结 果 为1,否 则 输 出 结 果 为0,每 个 元 素 的 比 较 结 果 占 一 个bit。
asc_ge_scalar按 元 素 判 断src >= value是 否 成 立,若 成 立 则 输 出 结 果 为1,否 则 为0。
asc_gt_scalarsrc中 的 每 个 元 素 逐 个 与 标 量value比 较 大 小,如 果 某 个 位 置 上 的 元 素 大 于value,则 输 出 结 果dst上 的 对 应 比 特 位 为1,否 则 为0。
asc_half2uint8将half类 型 数 据 转 换 为uint8_t类 型,支 持 多 种 舍 入 模 式。
asc_int642float将int64_t类 型 数 据 转 换 为float类 型。
asc_le按 元 素 判 断src0 <= src1是 否 成 立,若 成 立 则 输 出 结 果 为1,否 则 为0。
asc_leakyrelu执 行 矢 量Leaky Relu运 算。
asc_le_scalar按 元 素 判 断src <= value是 否 成 立,若 成 立 则 输 出 结 果 为1,否 则 为0。
asc_log按 元 素 取 自 然 对 数。
asc_lt_scalar执 行 矢 量 中 每 个 位 置 和 标 量 比 较,如 果 值 小 于 标 量 值 则 为1,否 则 为0,结 果 为 每 个bit位 按 小 端 序 排 布。
asc_mrgsort4将 已 经 排 好 序 的 最 多4条 队 列,合 并 排 列 成1条 队 列,结 果 按 照score域 由 大 到 小 排 序。
asc_get_vms4_sr获 取 执 行asc_mrgsort4操 作 后 的 队 列 中,每 个 队 列 已 经 理 过 的Region Proposal个 数。
asc_fma按 元 素 将src0和src1相 乘 并 和dst相 加,将 最 终 结 果 存 放 进dst中。
asc_mul_add_relu按 元 素 将src0和dst相 乘 并 加 上src1,再 进 行Relu计 算(结 果 和0对 比 取 较 大 值),最 终 结 果 存 放 进dst中。
asc_mul_cast_half2int8按 元 素 求 积,并 将 结 果 转 换 为int8_t类 型。
asc_mul_cast_half2uint8按 元 素 求 积,并 将 结 果 转 换 为uint8_t类 型。
asc_ne按 元 素 判 断src0 != src1是 否 成 立,若 成 立 则 输 出 结 果 为1,否 则 为0。
asc_not按 元 素 做 按 位 取 反,计 算 公 式 如 下。
asc_or每 对 元 素 按 位 或 运 算。
asc_reduce以 内 置 固 定 模 式 对 应 的 二 进 制 或 者 用 户 自 定 义 输 入 的 数 值 对 应 的gather mask(数 据 收 集 的 掩 码),从 源 操 作 数 中 选 取 元 素 写 入 目 的 操 作 数 中。
asc_rsqrt按 元 素 进 行 开 方 后 取 倒 数 的 计 算。
asc_set_va_reg用 于 设 置transpose的 地 址,将 操 作 数 地 址 序 列 与 地 址 寄 存 器 关 联。
asc_shiftleft将 所 有 元 素 左 移distance位。
asc_sub_relu按 元 素 求 差,再 进 行Relu计 算(结 果 和0对 比 取 较 大 值),并 提 供 转 换 最 终 结 果 的 数 据 类 型 的 功 能(s162s8、f322f16、f162s8)。
asc_transto5hd数 据 格 式 转 换,一 般 用 于 将NCHW格 式 转 换 成NC1HWC0格 式。
asc_pair_reduce_sum对 输 入 数 据 做 归 约 操 作,得 到 数 据 总 和。
asc_copy将 数 据 从Unified Buffer搬 运 到Unified Buffer。支 持 高 维 切 分。
asc_squeeze通 过 比 较 掩 码src1,将src0中 的 向 量 压 缩 成 更 短 的 向 量,存 储 到dst中。

数 据 搬 运

数 据 搬 运 类API,单 独 使 用 时 可 以 引 入vector_datamove.h和cube_datamove.h,此 类API列 表 如 下:

API名 称说 明
asc_copy_gm2l0a将GM中 的 数 据 搬 运 到L0A中。
asc_copy_gm2l0b将GM中 的 数 据 搬 运 到L0B中。
asc_copy_gm2l1将GM中 的 数 据 搬 运 到L1中。
asc_copy_gm2l1_nd2nz将GM中 的 数 据 搬 运 到L1中。
将GM中 的 数 据padding后 搬 运 到L1中。
将GM中 的 数 据 搬 运 到L1中。
将GM中 的 数 据 搬 运 到L1中,在 此 过 程 中 执 行DN->NZ/NCHW->NC1HWC0/NCHW->C1HWNC0操 作。
asc_copy_l12gm将 数 据 从L1搬 运 到GM。
asc_copy_l0c2gm将L0C中 的 数 据 搬 运 到GM中。
asc_copy_l0c2ub将L0C中 的 数 据 搬 运 到UB中。
asc_copy_l0c2l1矩 阵 计 算 完 成 后,对 结 果 进 行 量 化 处 理,之 后 将 处 理 结 果 搬 运 到L1中。
asc_set_l13d_rpt用 于 设 置Load3Dv2接 口 的repeat参 数。
asc_fill_l0a将L0A Buffer的Local Memory初 始 化 为 某 一 具 体 数 值。
asc_fill_l0b将L0B Buffer的Local Memory初 始 化 为 某 一 具 体 数 值。
asc_fill_l1将L1 Buffer的Local Memory初 始 化 为 某 一 具 体 数 值。
asc_set_l13d_size设 置asc_copy_l12l0a/asc_copy_l12l0b的3D格 式 搬 运 接 口 在L1 Buffer的 边 界 值。
asc_load_image_to_cbuf将 图 像 数 据 从Global Memory搬 运 到L1 Buffer。
asc_copy_l12bt将MMAD指 令 的Bias数 据 从L1 Buffer搬 运 到BiasTable Buffer中。
asc_copy_l12fb_arch_2201将 数 据 从L1 Buffer搬 运 到Fixpipe Buffer中,Fixpipe Buffer用 于 存 放 量 化 参 数。
asc_copy_l12fb_arch_3510将 数 据 从L1 Buffer搬 运 到Fixpipe Buffer中,Fixpipe Buffer用 于 存 放 量 化 参 数。
asc_copy_l12l0a用 于 搬 运 存 放 在L1 Buffer里 的512B大 小 的 矩 阵 到L0A Buffer里。
将 数 据 从L1 Buffer搬 运 到Unified Buffer中。
asc_copy_l12l0b用 于 搬 运 存 放 在L1 Buffer里 的512B大 小 的 矩 阵 到L0B Buffer里。
asc_copy_l12l0c将 矩 阵 由L1 Buffer搬 运 到L0C Buffer中。
asc_copy_l12l0b_sparse用 于 搬 运 存 放 在L1 Buffer里 的512B大 小 的 稠 密 权 重 矩 阵 到L0B Buffer里,同 时 读 取128B大 小 的 索 引 矩 阵 用 于 稠 密 矩 阵 的 稀 疏 化。
asc_copy_l12l0b_trans该 接 口 实 现 带 转 置 的2D格 式 数 据 从L1 Buffer到L0B Buffer的 加 载。
asc_copy_l12l0a_trans该 接 口 实 现 带 转 置 的2D格 式 数 据 从L1 Buffer到L0A Buffer的 加 载。
asc_set_l0c_copy_paramsDataCopy(CO1->GM、CO1->A1)过 程 中 进 行 随 路 格 式 转 换(NZ格 式 转 换 为ND格 式)时,通 过 调 用 该 接 口 设 置 格 式 转 换 的 相 关 配 置。
asc_set_l0c_copy_prequant数 据 搬 运 过 程 中 进 行 随 路 量 化 时,通 过 调 用 该 接 口 设 置 量 化 流 程 中 的 标 量 量 化 参 数。
将Mx scale矩 阵 从L1 Buffer搬 运 到L0A Buffer。
将Mx scale矩 阵 从L1 Buffer搬 运 到L0B Buffer。
asc_set_l13d_padding设 置Pad属 性 描 述,用 于 在 调 用asc_copy_l12l0a接 口 时 配 置 填 充 数 值。
asc_set_l13d_fmatrix设 置Feature map属 性 描 述,用 于 在 调 用asc_copy_l12l0a/asc_copy_l12l0b的3D格 式 搬 运 接 口 时 配 置 填 充 数 值。从 左 矩 阵 获 取FeatureMap的 属 性 时 使 用 该 接 口。
asc_set_l13d_fmatrix_b设 置Feature map属 性 描 述,用 于 在 调 用asc_copy_l12l0a/asc_copy_l12l0b的3D格 式 搬 运 接 口 时 配 置 填 充 数 值。从 右 矩 阵 获 取FeatureMap的 属 性 时 使 用 该 接 口。
asc_set_l0c2gm_lrelu_alpha用 于 设 置asc_copy_l0c2l1或asc_copy_l0c2gm接 口 计 算 过 程 中 使 用 的Leaky ReLU alpha值。该 值 只 支 持half和float两 种 数 据 类 型。
asc_copy_ub2ub将 数 据 从Unified Buffer搬 运 到Unified Buffer。
asc_copy_gm2ub将 数 据 从Global Memory搬 运 到 Unified Buffer。
asc_copy_gm2ub_align提 供 数 据 非 对 齐 搬 运 的 功 能,将 数 据 从Global Memory搬 运 到 Unified Buffer,并 支 持8位/16位/32位 数 据 类 型 搬 运。
asc_copy_ub2gm将 数 据 从Unified Buffer搬 运 到 Global Memory。
asc_copy_ub2gm_align将 数 据 从Unified Buffer搬 运 到 Global Memory,支 持8位/16位/32位 分 块 拷 贝 操 作。
asc_set_copy_pad_val和asc_copy_gm2ub_align或asc_copy_ub2gm_align接 口 配 合 使 用,设 置 连 续 搬 运 数 据 块 左 右 两 侧 需 要 填 补 的 数 据 值。
asc_copy_ub2l1将 数 据 从Unified Buffer (UB) 搬 运 到L1 Buffer。
asc_ndim_copy_gm2ub多 维 数 据 搬 运 接 口,将 数 据 从Global Memory (GM) 搬 运 到 Unified Buffer (UB)。
asc_set_gm2ub_loop1_stride使 用asc_copy_gm2ub_align将 数 据 从Global Memory (GM) 搬 运 到 Unified Buffer (UB)时,设 置 内 层 循 环 中 相 邻 迭 代 数 据 块 间 的 间 隔。
asc_set_gm2ub_loop2_stride使 用asc_copy_gm2ub_align将 数 据 从Global Memory (GM) 搬 运 到 Unified Buffer (UB)时,设 置 外 层 循 环 中 相 邻 迭 代 数 据 块 间 的 间 隔。
asc_set_gm2ub_loop_size使 用asc_copy_gm2ub_align将 数 据 从Global Memory (GM) 搬 运 到 Unified Buffer (UB)时,设 置 数 据 搬 运 流 程 中 的 循 环 次 数。
asc_set_ub2gm_loop1_stride使 用asc_copy_ub2gm_align将 数 据 从Unified Buffer (UB) 搬 运 到 Global Memory (GM)时,设 置 内 层 循 环 中 源 操 作 数 在 相 邻 迭 代 间 的 数 据 块 间 隔,以 及 目 的 操 作 数 在 相 邻 迭 代 间 的 数 据 块 间 隔。
asc_set_ub2gm_loop2_stride使 用asc_copy_ub2gm_align将 数 据 从Unified Buffer (UB) 搬 运 到 Global Memory (GM)时,设 置 外 层 循 环 中 源 操 作 数 在 相 邻 迭 代 间 的 数 据 块 间 隔,以 及 目 的 操 作 数 在 相 邻 迭 代 间 的 数 据 块 间 隔。
asc_set_ub2gm_loop_size使 用asc_copy_ub2gm_align将 数 据 从Unified Buffer (UB) 搬 运 到 Global Memory (GM)时,设 置 内 层 循 环 和 外 层 循 环 的 次 数。
asc_set_ndim_loop_stride设 置asc_ndim_copy_gm2ub在 进 行 多 维 搬 运 时 每 个 维 度 内 的 源 操 作 数 与 目 的 操 作 数 的 元 素 之 间 的 间 隔,最 多 设 置5个 维 度。
asc_set_ndim_pad_value设 置asc_ndim_copy_gm2ub接 口Padding的 填 充 固 定 值。

标 量 操 作

标 量 操 作 类API,单 独 使 用 时 可 以 引 入scalar_compute.h,此 类API列 表 如 下:

API名 称说 明
asc_clz计 算 参 数 前 导 零 的 数 量(二 进 制 从 最 高 位 到 第 一 个1共 有 多 少 个0)。
asc_set_nthbit计 算 一 个uint64_t类 型 数 字 的 指 定 二 进 制 位 置 为1,其 余 位 保 持 不 变。
asc_sflbits计 算 一 个int64_t类 型 数 字 的 二 进 制 中,从 最 高 数 值 位 开 始 与 符 号 位 相 同 的 连 续 比 特 位 的 个 数。
asc_clear_nthbit位 操 作 函 数,用 于 将 一 个uint64_t整 数bits的 第idx位 设 置 为0。
asc_ffsFindFirstSet接 口,输 入 数 据 的 二 进 制 表 示 中 从 最 低 位 向 最 高 位 查 找 第 一 个 值 为1的 位,并 返 回 其 位 置,如 果 没 找 到 则 返 回-1。
asc_ffz获 取 一 个uint64_t类 型 数 字 的 二 进 制 表 示 中 从 最 低 有 效 位 开 始 的 第 一 个0出 现 的 位 置,如 果 没 找 到 则 返 回-1。
asc_popc获 取 一 个uint64_t类 型 数 字 的 二 进 制 中1的 个 数。
asc_zero_bits_cnt获 取 一 个uint64_t类 型 数 字 的 二 进 制 中0的 个 数。
asc_store_dev不 经 过DCache向GM地 址 上 写 数 据。
asc_float2int32将float类 型 转 化 为int32_t类 型,并 支 持 多 种 舍 入 模 式。

矩 阵 计 算

矩 阵 计 算 类API,单 独 使 用 时 可 以 引 入cube_compute.h,此 类API列 表 如 下:

API名 称说 明
asc_set_mmad_direction_m设 置mmad计 算 时 优 先 通 过M/N中 的N方 向,然 后 通 过M方 向 产 生 结 果,M为 矩 阵 的 行,N为 矩 阵 的 列。
asc_set_mmad_direction_n设 置mmad计 算 时 优 先 通 过M/N中 的M方 向,然 后 通 过N方 向 产 生 结 果,M为 矩 阵 的 行,N为 矩 阵 的 列。
asc_enable_hf32_trans设 置HF32模 式 取 整 方 式,需 要 先 使 用asc_enable_hf32开 启HF32取 整 模 式。
asc_mmad完 成 矩 阵 乘 加 操 作。
asc_mmad_sparse完 成 矩 阵 乘 加 操 作,传 入 的 左 矩 阵A为 稀 疏 矩 阵,右 矩 阵B为 稠 密 矩 阵。
asc_set_fp32_mode用 于 设 置Mmad计 算 开 启FP32模 式,开 启 该 模 式 后L0A Buffer/L0B Buffer中 的FP32数 据 在 参 与Mmad计 算 之 前 不 做 舍 入 处 理。
asc_set_l0c2gm_config数 据 搬 运 过 程 中 进 行 随 路 量 化 时,通 过 调 用 该 接 口 设 置 量 化 流 程 中 的 矢 量 量 化 参 数。
asc_get_l0c2gm_relu数 据 搬 运 过 程 中 进 行 随 路 量 化 时,通 过 调 用 该 接 口 获 取ReLU操 作 前 矢 量 的 起 始 地 址。
asc_get_l0c2gm_unitflag数 据 搬 运 过 程 中 进 行 随 路 量 化 时,通 过 调 用 该 接 口 获 取unit_flag设 置。
asc_get_l0c2gm_prequant数 据 搬 运 过 程 中 进 行 随 路 量 化 时,通 过 调 用 该 接 口 获 取 量 化 操 作 前 矢 量 的 起 始 地 址。
asc_enable_hf32用 于 设 置Mmad计 算 开 启HF32模 式,开 启 该 模 式 后L0A Buffer/L0B Buffer中 的FP32数 据 将 在 参 与Mmad计 算 之 前 被 舍 入 为HF32。

同 步 控 制

同 步 控 制 类API,单 独 使 用 时 可 以 引 入sync.h,此 类API列 表 如 下:

API名 称说 明
释 放 缓 存。
用 于AI Core内 部 异 步 流 水 线 同 步 的 接 口。
asc_sync_notify设 置 同 步 标 志。
asc_sync_wait等 待 同 步 标 志。
asc_sync_pipe等 待 指 定 流 水 线 操 作 完 成。
asc_sync等 待 所 有 流 水 线 操 作 完 成。
asc_sync_vec同 步 所 有 流 水 线。
asc_sync_mte3等 待PIPE_MTE3流 水 完 成。
asc_sync_mte2等 待PIPE_MTE2流 水 完 成。
asc_sync_data_barrier用 于 阻 塞 后 续 的 指 令 执 行,直 到 所 有 之 前 的 内 存 访 问 指 令(需 要 等 待 的 内 存 位 置 可 以 通 过 参 数 控 制)执 行 结 束。
asc_sync_block_arrive该 指 令 用 于 发 送 同 步 信 息 数 据 到 核 间 同 步 寄 存 器,设 置 同 步 点。
asc_sync_block_waitasc_sync_block_arrive配 合 使 用(通 过flagID关 联),用 于 等 待 所 有 同 步 对 象 到 达flagID对 应 的 同 步 点。
等 待 核 间 同 步 寄 存 器 同 步 标 志。
向 核 间 同 步 寄 存 器 发 送 同 步 信 号。
等 待block内 同 步 标 志。

系 统 变 量

系 统 变 量 类API,单 独 使 用 时 可 以 引 入sys_var.h,此 类API列 表 如 下:

API名 称说 明
asc_get_block_num获 取AI核 数。
asc_get_block_idx获 取 当 前 运 行 核 的 索 引。
asc_get_core_id获 取 当 前 核 的 编 号。
asc_get_sub_block_id获 取AI Core上Vector核 的ID。
asc_get_sub_block_num分 离 模 式 下,获 取 一 个AI Core上Cube Core(AIC)或 者Vector Core(AIV)的 数 量。
asc_set_ctrl设 置CTRL寄 存 器(控 制 寄 存 器)的 值。
asc_get_ctrl读 取CTRL寄 存 器(控 制 寄 存 器)的 值。
asc_get_phy_buf_addr基 于 偏 移 量 获 取 片 上 实 际 物 理 地 址。
asc_get_system_cycle获 取 当 前 系 统cycle数。
asc_get_arch_ver获 取 当 前AI处 理 器 架 构 版 本 号。
asc_get_program_counter获 取 程 序 计 数 器 的 指 针,程 序 计 数 器 用 于 记 录 当 前 程 序 执 行 的 位 置。
asc_get_ffts_base_addr获 取 核 间 同 步 寄 存 器 的 基 地 址。
asc_set_ffts_base_addrasc_sync_block_arriveasc_sync_block_wait之 前 使 用,设 置 核 间 同 步 寄 存 器 的 基 地 址。
asc_get_phy_stack_base获 取 物 理 堆 栈 基 地 址。
asc_get_smmu_tag_version获 取SMMU(System Memory Management Unit)版 本 信 息。
asc_get_status获 取 状 态 信 息。
asc_get_sys_virtual_base获 取 系 统 虚 拟 基 地 址。
asc_get_vf_len获 取Tensor位 宽VL(Vector Length)的 大 小。
设 置MTE2_NZ_PARA寄 存 器 的 值。
设 置PADDING_B寄 存 器 的 值。
设 置QUANT_POST寄 存 器 的 值。
设 置RELU_ALPHA寄 存 器 的 值。
asc_set_l0c2gm_channel_para对 通 道 步 长 参 数 的 专 用 寄 存 器 的 比 特 位 进 行 设 置。
asc_set_l3d_rpt_b用 于 设 置 接 口asc_copy_l12l0a、asc_copy_l12l0b的2D格 式 搬 运 的repeat参 数。

缓 存 控 制

缓 存 控 制 类API,单 独 使 用 时 可 以 引 入cache_ctrl.h,此 类API列 表 如 下:

API名 称说 明
asc_datacache_preload从 源 地 址 所 在 的 特 定GM地 址 预 加 载 数 据 到Data Cache中。
asc_dcci用 于 刷 新Cache, 保 证Cache的 一 致 性。
数 据 缓 存 失 效,使 整 个 数 据 缓 存 无 效 化。
asc_get_icache_preload_status获 取ICache的Preload的 状 态。
asc_icache_preload从 指 令 所 在DDR地 址 预 加 载 数 据 到 对 应 的cacheline中。

原 子 操 作

原 子 操 作 类API,单 独 使 用 时 可 以 引 入atomic.h,此 类API列 表 如 下:

API名 称说 明
asc_set_atomic_add_bfloat设 置 对 后 续 的 从Unified Buffer/L0C Buffer/L1 Buffer到Global Memory的 数 据 传 输 开 启 原 子 累 加。累 加 的 数 据 类 型 为bfloat16_t。
asc_set_atomic_add_float设 置 对 后 续 的 从Unified Buffer/L0C Buffer/L1 Buffer到Global Memory的 数 据 传 输 开 启 原 子 累 加。累 加 的 数 据 类 型 为float。
asc_set_atomic_add_float16设 置 对 后 续 的 从Unified Buffer/L0C Buffer/L1 Buffer到Global Memory的 数 据 传 输 开 启 原 子 累 加。累 加 的 数 据 类 型 为half。
asc_set_atomic_add_int设 置 对 后 续 的 从Unified Buffer/L0C Buffer/L1 Buffer到Global Memory的 数 据 传 输 开 启 原 子 累 加。累 加 的 数 据 类 型 为int32_t。
asc_set_atomic_add_int8设 置 对 后 续 的 从Unified Buffer/L0C Buffer/L1 Buffer到Global Memory的 数 据 传 输 开 启 原 子 累 加。累 加 的 数 据 类 型 为int8_t。
asc_set_atomic_add_int16设 置 对 后 续 的 从Unified Buffer/L0C Buffer/L1 Buffer到Global Memory的 数 据 传 输 开 启 原 子 累 加。累 加 的 数 据 类 型 为int16_t。
asc_set_atomic_max_bfloat设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的bfloat16_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 大 值 写 入GM。
asc_set_atomic_max_float设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的float数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 大 值 写 入GM。
asc_set_atomic_max_float16设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的half数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 大 值 写 入GM。
asc_set_atomic_max_int设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的int32_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 大 值 写 入GM。
asc_set_atomic_max_int8设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的int8_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 大 值 写 入GM。
asc_set_atomic_max_int16设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的int16_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 大 值 写 入GM。
asc_set_atomic_min_bfloat设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的bfloat16_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 小 值 写 入GM。
asc_set_atomic_min_float设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的float数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 小 值 写 入GM。
asc_set_atomic_min_float16设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的half数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 小 值 写 入GM。
asc_set_atomic_min_int设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的int32_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 小 值 写 入GM。
asc_set_atomic_min_int8设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的int8_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 小 值 写 入GM。
asc_set_atomic_min_int16设 置 计 算 结 果 以 原 子 比 较 的 方 式 传 输 到GM。在 拷 贝 前,将 待 传 输 的int16_t数 据 与GM中 已 有 数 据 进 行 逐 元 素 比 较,并 将 最 小 值 写 入GM。
asc_set_store_atomic_config_v1设 置 原 子 操 作 启 用 位 与 原 子 操 作 类 型 的 值,适 用 于Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品 和Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品。
设 置 原 子 操 作 启 用 位 与 原 子 操 作 类 型 的 值,适 用 于Ascend 950PR/Ascend 950DT。
asc_get_store_atomic_config获 取 原 子 操 作 启 用 位 与 原 子 操 作 类 型 的 值。
asc_set_atomic_none清 空 原 子 操 作 的 状 态。

其 他 操 作

API名 称说 明
asc_init初 始 化NPU状 态。

Reg数 据 搬 运

Reg数 据 搬 运 类API,单 独 使 用 时 可 以 引 入reg_load.h,此 类API列 表 如 下:

API名 称说 明
asc_loadreg计 算 数 据 搬 运 接 口,支 持 从UB非32字 节 对 齐 的 源 地 址src搬 运 至 矢 量 数 据 寄 存 器,搬 运 量 为VL。
asc_loadalign对 齐 数 据 搬 运 接 口,从UB连 续 对 齐 搬 入 目 的 操 作 数,支 持 多 种 搬 入 模 式。
asc_loadalign对 齐 数 据 搬 运 接 口,从UB连 续 对 齐 搬 入 目 的 操 作 数,随 路 完 成deinterleave操 作。
asc_loadalign_postupdate将 数 据 从UB搬 入MaskReg,使 能post mod。
asc_loadunalign_pre用 于 在 进 行 非 对 齐 数 据 搬 入 前 的 初 始 化,需 配 合asc_loadunalign接 口 使 用。
asc_loadunalignreg计 算 数 据 搬 运 接 口,适 用 于 从UB非32B对 齐 的 起 始 地 址 连 续 搬 入 矢 量 数 据 寄 存 器 的 场 景。
asc_gather根 据 索 引 位 置index将 源 操 作 数src按 元 素 收 集 到 目 的 操 作 数dst中。
asc_gather_datablock给 定 源 操 作 数 在UB中 的 基 地 址 和 索 引,根 据 索 引 位 置 将 源 操 作 数 按DataBlock收 集 到 目 的 操 作 数 中。
asc_get_mask_spr从 特 殊 寄 存 器SPR{MASK1, MASK0}读 取mask值 并 根 据 数 据 类 型 格 式 返 回 对 应 的mask数 据,MASK0、MASK1均 为64bit的 寄 存 器。
asc_storereg计 算 数 据 搬 运 接 口,适 用 于 从 矢 量 数 据 寄 存 器 搬 出 到UB的 场 景,不 区 分 是 否 对 齐,在 追 求 极 致 性 能 时,应 尽 量 避 免 使 用 该 接 口。
asc_storealignreg计 算 数 据 搬 运 接 口,适 用 于 从 矢 量 数 据 寄 存 器 连 续 对 齐 搬 出 到UB的 场 景,并 支 持 多 种 搬 出 模 式。
asc_storeunalignreg计 算 数 据 搬 运 接 口,适 用 于 从 矢 量 数 据 寄 存 器 连 续 非32B对 齐 的 起 始 地 址 连 续 搬 出 到UB的 场 景。
asc_storeunalign_postupdatereg计 算 数 据 搬 运 接 口,适 用 于 从 矢 量 数 据 寄 存 器 连 续 非32B对 齐 的 起 始 地 址 连 续 搬 出 到UB的 场 景。

Reg矢 量 计 算

Reg矢 量 计 算 类API,单 独 使 用 时 可 以 引 入reg_vector.h,此 类API列 表 如 下:

API名 称说 明
asc_abs逐 元 素 计 算 绝 对 值。
asc_abs_sub逐 元 素 计 算 差 的 绝 对 值。
asc_add按 元 素 执 行 加 法 运 算。
asc_addc按 元 素 执 行 带 进 位 的 加 法 运 算。
asc_add_scalar按 元 素 执 行 矢 量 和 标 量 的 加 法 运 算。
asc_and对 掩 码 寄 存 器 操 作:根 据mask对 源 操 作 数src0、src1的 有 效bit进 行 逻 辑 与 运 算,得 到 新 的 掩 码 寄 存 器。
asc_arange以 传 入 的value为 起 始 值,生 成 递 增/递 减 的 索 引,并 将 生 成 的 索 引 保 存 在dst中。
asc_axpy根 据mask对 源 操 作 数src、value进 行 按 元 素 做 乘 加 操 作,将 结 果 写 入 目 的 操 作 数dst。
asc_bfloat162e1m2x2将bfloat16_t类 型 转 换 为fp4x2_e1m2_t类 型,并 支 持 多 种 舍 入 模 式。
asc_bfloat162e2m1x2将bfloat16_t类 型 转 换 为fp4x2_e2m1_t类 型,并 支 持 多 种 舍 入 模 式。
asc_bfloat162float将bfloat16_t类 型 转 换 为float类 型,无 舍 入 模 式。
asc_bfloat162half将bfloat16_t类 型 转 换 为half类 型,并 支 持 多 种 舍 入 模 式 和 饱 和/非 饱 和 模 式。
asc_bfloat162int32将bfloat16_t类 型 数 据 转 换 为int32_t类 型,并 支 持 多 种 舍 入 模 式。
asc_clear_ar_spr对AR寄 存 器 进 行 清 理,AR寄 存 器 通 常 由asc_squeeze接 口 使 用。
asc_copy完 成 数 据 在 寄 存 器 内 的 搬 运。
asc_create_iter_reg地 址 寄 存 器 通 过 该 接 口 初 始 化,然 后 在 循 环 之 中 使 用 地 址 寄 存 器 存 储 地 址 偏 移 量。
asc_create_mask根 据 入 参 生 成 相 应 的 掩 码 寄 存 器。
asc_cumulative_histogram对 直 方 图 数 据 进 行 累 计 统 计。
asc_deintlv给 定 源 操 作 数src0和src1,将src0和src1中 的 元 素 解 交 织 存 入 结 果 操 作 数dst0和dst1中。
asc_div按 元 素 执 行 除 法 运 算。
asc_duplicate根 据mask将 源 操 作 数src的 最 低 位 元 素 填 充 到 目 的 操 作 数dst。
asc_duplicate_scalar根 据mask将value填 充 到 目 的 操 作 数dst。
asc_e1m2x22bfloat16将fp4x2_e1m2_t类 型 转 换 为bfloat16_t类 型。
asc_e2m1x22bfloat16将fp4x2_e2m1_t类 型 转 换 为bfloat16_t类 型。
asc_e4m32float将fp8_e4m3fn_t类 型 转 换 为float类 型。
asc_e5m22float将vector_fp8_e5m2_t类 型 的 源 操 作 数 以256B为 单 位 分 为 四 部 分,读 取 其 中 一 部 分 元 素,将 其 转 换 成vector_float类 型 并 写 入 目 的 操 作 数。
asc_eq对 源 操 作 数 逐 元 素 比 较 是 否 相 等。
asc_eq_scalar对 源 操 作 数 逐 元 素 比 较 是 否 与 标 量 相 等。
asc_exp对 源 操 作 数 逐 元 素 计 算 指 数。
asc_exp_sub将src0与src1相 减,差 值 作 为e的 指 数 计 算。
asc_float2bfloat16将float类 型 转 换 为bfloat16_t类 型,并 支 持 多 种 舍 入 模 式。
asc_float2e4m3将float类 型 转 换 为fp8_e4m3fn_t类 型,支 持RINT舍 入 模 式。
asc_float2e5m2将float类 型 数 据 转 换 为fp8_e5m2类 型。
asc_float2half将float类 型 转 换 为half类 型,并 支 持 多 种 舍 入 模 式。
asc_float2hif8将float类 型 转 换 为hifloat8_t类 型,并 支 持 多 种 舍 入 模 式。
asc_float2int16将float类 型 转 换 为int16_t类 型,并 支 持 多 种 舍 入 模 式。
asc_float2int32将float类 型 转 换 为int32_t类 型,并 支 持 多 种 舍 入 模 式。
asc_float2int64将float类 型 转 换 为int64_t类 型,并 支 持 多 种 舍 入 模 式。
asc_frequency_histogram对 直 方 图 数 据 进 行 频 率 统 计。
asc_gege(greater than or equal to),对 源 操 作 数 执 行 逐 元 素 比 较。
asc_ge_scalarge(greater than or equal to),对 源 操 作 数 与 标 量 执 行 逐 元 素 比 较。
asc_gtgt(greater than),对 源 操 作 数 执 行 逐 元 素 比 较。
asc_gt_scalargt(greater than),对 源 操 作 数 与 标 量 执 行 逐 元 素 比 较。
asc_half2bfloat16将half类 型 数 据 转 换 为bfloat16_t类 型,并 支 持 多 种 舍 入 模 式。
asc_half2float将half类 型 数 据 转 换 为float类 型。
asc_half2hif8将half类 型 转 换 为hifloat8_t类 型,并 支 持 多 种 舍 入 模 式。
asc_half2int16将half类 型 数 据 转 换 为int16_t类 型,并 支 持 多 种 舍 入 模 式。
asc_half2int32将half类 型 数 据 转 换 为int32_t类 型,并 支 持 多 种 舍 入 模 式。
asc_half2int4x2将half类 型 数 据 转 换 为int4x2_t类 型,并 支 持 多 种 舍 入 模 式。
asc_half2int8将half类 型 转 换 为int8_t类 型,并 支 持 多 种 舍 入 模 式。
asc_half2uint8将half类 型 转 换 为uint8_t类 型,并 支 持 多 种 舍 入 模 式。
asc_hif82float将hifloat8_t类 型 数 据 转 换 为float类 型。
asc_hif82half将hifloat8_t类 型 数 据 转 换 为half类 型。
asc_int162float将int16_t类 型 转 换 为float类 型。
asc_int162half将int16_t类 型 转 换 为half类 型。
asc_int162int32将int16_t类 型 转 换 为int32_t类 型。
asc_int162uint32将int16_t类 型 转 换 为uint32_t类 型。
asc_int162uint8将int16_t类 型 转 换 为uint8_t类 型。
asc_int322float将int32_t类 型 转 换 为float类 型,并 支 持 多 种 舍 入 模 式。
asc_int322int16将int32_t类 型 转 换 为int16_t类 型。
asc_int322int64将int32_t类 型 转 换 为int64_t类 型。
asc_int322uint16将int32_t类 型 转 换 为uint16_t类 型。
asc_int322uint8将int32_t类 型 转 换 为uint8_t类 型。
asc_int4x22bfloat16将int4x2_t类 型 转 换 为bfloat16_t类 型,无 舍 入 模 式。
asc_int4x22half将int4x2_t类 型 数 据 转 换 为half类 型。
asc_int4x22int16将int4x2_t类 型 转 换 为int16_t类 型。
asc_int642float将int64_t类 型 数 据 转 换 为float类 型,并 支 持 多 种 舍 入 模 式。
asc_int642int32将int64_t类 型 转 换 为int32_t类 型。
asc_int82half将int8_t类 型 转 换 为half类 型。
asc_int82int16将int8_t类 型 转 换 为int16_t类 型。
asc_int82int32将int8_t类 型 转 换 为int32_t类 型。
asc_intlv将 源 操 作 数src0和src1中 的 元 素 交 织 存 入 目 的 操 作 数dst0和dst1中。
asc_lele(less than or equal to),对 源 操 作 数 执 行 逐 元 素 比 较。
asc_leakyrelu按 元 素 执 行Leaky ReLU(Leaky Rectified Linear Unit)操 作。
asc_le_scalarle(less than or equal to),对 源 操 作 数 与 标 量 执 行 逐 元 素 比 较。
asc_ln对 源 操 作 数 逐 元 素 计 算 自 然 对 数。
asc_ltlt(less than),对 源 操 作 数 执 行 逐 元 素 比 较。
asc_lt_scalarlt(less than),对 源 操 作 数 与 标 量 执 行 逐 元 素 比 较。
asc_maddmadd(multiply-add),对 源 操 作 数 执 行 逐 元 素 乘 法 和 加 法。
asc_max按 元 素 求 最 大 值。
asc_max_scalar按 元 素 求 矢 量 和 标 量 的 最 大 值。
asc_mem_barReg计 算 宏 函 数 内 不 同 流 水 线 之 间 的 同 步 指 令。
asc_min根 据mask对 源 操 作 数src0、src1进 行 按 元 素 求 最 小 值 操 作,将 结 果 写 入 目 的 操 作 数dst。
asc_min_scalar源 操 作 数 矢 量 内 每 个 元 素 与 标 量 比 较,取 较 小 值。
asc_mul对 源 操 作 数src0和src1进 行 乘 法 运 算,将 结 果 写 入 目 的 操 作 数dst。
asc_mull根 据mask对 输 入 数 据src0、src1按 元 素 相 乘,将 结 果 写 入dst0,溢 出 部 分 写 入dst1。
asc_muls对 源 操 作 数src和value进 行 乘 法 运 算 再 按 照 数 据 类 型 转 换 的ROUND舍 入 模 式 转 成half类 型,根 据mask将 结 果 写 入 目 的 操 作 数dst。
asc_mul_scalar对 源 操 作 数src、value进 行 按 元 素 乘 法 操 作,将 结 果 写 入 目 的 操 作 数dst。
asc_nene(not equal),对 源 操 作 数 执 行 逐 元 素 比 较。
asc_neg根 据mask对 源 操 作 数src进 行 取 相 反 数 操 作,将 结 果 写 入 目 的 操 作 数dst。
asc_ne_scalarsrc中 的 每 个 元 素 逐 个 与 标 量value比 较 大 小,如 果src_i != value,则 输 出 结 果dst对 应 比 特 位 为1,否 则 为0。
asc_not执 行 矢 量 非 运 算。
asc_or对 源 操 作 数src0和src1进 行 或(
asc_pack将 源 操 作 数 中 的 元 素 选 取 低8位(b16)、低16位(b32)、低32位(b64)写 入 目 的 操 作 数 的 低 半 部 分 或 高 半 部 分。
asc_pair_reduce_sumPairReduceSum: 相 邻 两 个(奇 偶)元 素 求 和,结 果 写 入dst。
asc_prelu源 操 作 数src0大 于0的 情 况 下 直 接 将src0写 入 目 的 操 作 数dst,否 则 将src0 * src1的 结 果 写 入dst。
asc_reduce_max根 据mask对 源 操 作 数src进 行 归 约 最 大 值 操 作,将 结 果 写 入 目 的 操 作 数dst。
asc_reduce_max_datablock找 出DataBlock中 的 最 大 值,并 将 最 终 的 计 算 结 果 依 次 保 存 在dst中 的 最 低 位。
asc_reduce_min根 据mask对 源 操 作 数src进 行 归 约 最 小 值 操 作,将 结 果 写 入 目 的 操 作 数dst。
asc_reduce_min_datablock根 据mask将 每 个DataBlock(32B)中 的 最 小 值,依 次 保 存 在dst中 的 最 低 位。
asc_reduce_sum归 约 求 和 功 能,用 于 将src中 的 所 有 参 与 计 算 的 元 素 求 和,得 到 的 结 果 保 存 在dst中。
asc_reduce_sum_datablock归 约 求 和 功 能,用 于 将src每 个DataBlock(32B)中 参 与 计 算 的 元 素 求 和,得 到 的 结 果 依 次 保 存 在dst中。
asc_relu逐 元 素 执 行ReLU运 算。
asc_select根 据mask的 比 特 位 值,从 源 操 作 数src0、src1中 选 择 元 素,得 到 目 的 操 作 数dst。
asc_shiftleft根 据 掩 码mask对 输 入 数 据src0,按 照src1对 应 元 素 进 行 左 移 操 作,完 成 后 将 结 果 写 入dst中。
asc_shiftleft_scalar根 据mask对 源 操 作 数src执 行 左 移,左 移 的 位 数 由 输 入 参 数value决 定,将 结 果 写 入 目 的 操 作 数dst。
asc_shiftright根 据 掩 码mask对 输 入 数 据src0,按 照src1对 应 元 素 进 行 右 移 操 作,完 成 后 将 结 果 写 入dst中。
asc_shiftright_scalar根 据mask对 源 操 作 数src执 行 右 移,右 移 的 位 数 由 输 入 参 数value决 定,将 结 果 写 入 目 的 操 作 数dst。
asc_sqrt逐 元 素 计 算 平 方 根。
asc_squeeze将src中 被mask选 择 的 有 效 元 素 依 次 复 制 到dst,有 效 元 素 在dst上 连 续 排 列。
asc_sub按 元 素 执 行 减 法 运 算。
asc_subc按 元 素 执 行 带 借 位 的 减 法 运 算。
asc_truncate将 源 操 作 数 的 浮 点 数 元 素 截 断 到 整 数 位,同 时 源 操 作 数 的 数 据 类 型 保 持 不 变,并 支 持 多 种 舍 入 模 式。
asc_uint162uint32将uint16_t类 型 转 换 为uint32_t类 型。
asc_uint162uint8将uint16_t类 型 转 换 为uint8_t类 型。
asc_uint322int16将uint32_t类 型 转 换 为int16_t类 型。
asc_uint322uint16将uint32_t类 型 转 换 为uint16_t类 型。
asc_uint322uint8将uint32_t类 型 转 换 为uint8_t类 型。
asc_uint82half将uint8_t类 型 转 换 为half类 型。
asc_uint82uint16将uint8_t类 型 转 换 为uint16_t类 型。
asc_uint82uint32将uint8_t类 型 转 换 为uint32_t类 型。
asc_unpack矢 量 解 包 操 作。
asc_unsqueeze根 据mask进 行 解 压 缩,将 生 成 的 数 据 输 出 到dst。
asc_update_mask根 据value大 小 生 成 对 应 的 掩 码 寄 存 器 中 的 值。
asc_xor根 据mask对 输 入 的src0、src1按 元 素 异 或(^)进 行 操 作,将 结 果 写 入dst。

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