Skip to content
版 本

asc_get_phy_buf_addr

产 品 支 持 情 况

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

功 能 说 明

基 于 偏 移 量offset获 取 片 上 实 际 物 理 地 址。

函 数 原 型

C++
__aicore__ inline uint64_t asc_get_phy_buf_addr(uint64_t offset)

参 数 说 明

参 数 名输 入/输 出描 述
offset输 入片 上 内 存 的 地 址 偏 移 量,范 围 是0~物 理 内 存 大 小。

返 回 值 说 明

物 理 内 存 的 地 址。

流 水 类 型

PIPE_S

约 束 说 明

不 能 和以 数 组 方 式 申 请 内 存 的 方 法混 用。

调 用 示 例

C++
// 假 设src0,src1,dst三 个 操 作 数 均 包 含64个half类 型 的 数 据。
uint64_t offset = 0;                                   // 首 先 为src0申 请 内 存,从0开 始。
__ubuf__ half* src0 = (__ubuf__ half*)asc_get_phy_buf_addr(offset);    // 获 取src0的 地 址,通 过__ubuf__关 键 字 指 定 该 地 址 指 向UB内 存。
offset += 64 * sizeof(half);                           // 通 过offset将src1的 起 始 地 址 设 置 在src0之 后。
__ubuf__ half* src1 = (__ubuf__ half*)asc_get_phy_buf_addr(offset);    // 获 取src1的 地 址,通 过__ubuf__关 键 字 指 定 该 地 址 指 向UB内 存。
offset += 64 * sizeof(half);                           // 通 过offset将src1的 起 始 地 址 设 置 在src0之 后。
__ubuf__ half* dst = (__ubuf__ half*)asc_get_phy_buf_addr(offset);     // 获 取dst的 地 址,通 过__ubuf__关 键 字 指 定 该 地 址 指 向UB内 存。
...... // 使 用src0、src1、dst中 的 数 据 进 行 后 续 计 算 或 数 据 搬 运 操 作。

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