asc_get_phy_buf_addr
产 品 支 持 情 况
| 产 品 | 是 否 支 持 |
|---|---|
| √ | |
| √ | |
| √ |
功 能 说 明
基 于 偏 移 量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中 的 数 据 进 行 后 续 计 算 或 数 据 搬 运 操 作。