C API
C API开 放 芯 片 完 备 编 程 能 力,支 持以 数 组 形 式 分 配 内 存,一 般 基 于 指 针 编 程。提 供 与 业 界 一 致 的C语 言 编 程 体 验。
需 要 包 含 的 头 文 件
说 明
包 含asc_simd.h文 件 来 调 用C API相 应 接 口。如 无 特 殊 说 明,包 含 该 头 文 件 即 可 满 足 接 口 调 用 需 求。 若API文 档 中 有 特 殊 说 明,则 应 遵 循API的 具 体 说 明。
C++
#include "c_api/asc_simd.h"
API类 型 介 绍
- 前n个 数 据 计 算:该 类 型API在 计 算 时 采 用“紧 密 排 布”的 数 据 读 取 方 式,即 从 起 始 位 置 开 始,按 顺 序 连 续 获 取 所 需 数 据。例 如,若 需 处 理N个 数 据,则 从 源 操 作 数 的 第0个 位 置 开 始,依 次 取 至 第N-1个 位 置。
- 高 维 切 分 计 算:该 类 型API按 照 设 定 的 规 则“跳 过 部 分 数 据”。适 合 处 理 需 要 间 隔 采 样 的 场 景,灵 活 度 高,但 需 要 额 外 配 置 相 关 参 数。
- 同 步 计 算:该 类 型API内 部 自 动 插 入 同 步 操 作,易 用 性 更 强。
关 键 字
| 名 称 | 描 述 |
|---|---|
| __gm__ | 存 储 空 间 定 义 修 饰 符,表 示 被 修 饰 的 变 量 位 于Global Memory地 址 空 间。 |
| __ubuf__ | 存 储 空 间 定 义 修 饰 符,表 示 被 修 饰 的 变 量 位 于Unified Buffer地 址 空 间。 |
| __aicore__ | 执 行 空 间 限 定 符。表 示 该 函 数 只 能 在Ai Core上 执 行。 |
| __cbuf__ | 存 储 空 间 定 义 修 饰 符,表 示 被 修 饰 的 变 量 位 于L1 Buffer地 址 空 间。 |
| __simd_callee__ | 执 行 空 间 限 定 符。表 示 该 函 数 只 能 在Reg上 执 行。 |
流 水 类 型
NPU内 部 有 不 同 的 计 算 单 元,在 计 算 时 往 往 需 要 把 计 算 数 据 搬 运 到 计 算 单 元 上。不 同 计 算 单 元 上 的 计 算 过 程、数 据 搬 运 过 程 可 划 分 为 不 同 的 流 水 线。在AI Core上 执 行 的 操 作 会 被 分 配 到 不 同 的 流 水 线(PIPE)上 执 行,包 括 以 下 几 种:
- PIPE_S:标 量 流 水 线,负 责 指 令 分 发 和 标 量 计 算。
- PIPE_V:矢 量 计 算 流 水 线。
- PIPE_M:矩 阵 计 算 流 水 线。
- PIPE_MTE1:搬 运 操 作。包 括 从L1 Buffer到L0A Buffer或L0B Buffer,从L1 Buffer到UB的 搬 运 操 作 和L0A Buffer或L0B Buffer的 初 始 化 操 作。
- PIPE_MTE2:搬 运 操 作。包 括 从GM到L1 Buffer、从GM到L0A Buffer或L0B Buffer、从GM到UB的 搬 运 操 作 和L1 Buffer的 初 始 化 操 作。
- PIPE_MTE3:搬 运 操 作。包 括 从UB到GM、从UB到L1 Buffer的 操 作 和 从UB到UB的 搬 运 操 作。
- PIPE_FIX:Fixpipe流 水 线。
- PIPE_ALL:所 有 流 水 线。
可 通 过同 步 控 制类API控 制 同 一 流 水 线 内 的 运 行 顺 序 和 不 同 流 水 线 间 的 执 行 顺 序。
API列 表
| 目 录 |
|---|
| 数 据 结 构 |
| 矢 量 计 算 |
| 数 据 搬 运 |
| 标 量 操 作 |
| 矩 阵 计 算 |
| 同 步 控 制 |
| 系 统 变 量 |
| 缓 存 控 制 |
| 原 子 操 作 |
| 其 他 操 作 |
| Reg数 据 搬 运 |
| Reg矢 量 计 算 |
参 考 样 例
Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品 的C API样 例 请 参 考C API Add样 例。 Ascend 950PR/Ascend 950DT的C API样 例 请 参 考C API Add样 例。