GetDataBlockSizeInBytes
产 品 支 持 情 况
| 产 品 | 是 否 支 持 |
|---|---|
Ascend 950PR/Ascend 950DT | √ |
Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品 | √ |
Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品 | √ |
Atlas 200I/500 A2 推 理 产 品 | x |
Atlas 推 理 系 列 产 品 AI Core | √ |
Atlas 推 理 系 列 产 品 Vector Core | x |
Atlas 训 练 系 列 产 品 | √ |
Kirin X90 | √ |
Kirin 9030 | √ |
功 能 说 明
头 文 件 路 径 为:"basic_api/kernel_operator_sys_var_intf.h"。
获 取 当 前 芯 片 版 本 一 个DataBlock的 大 小,单 位 为Byte。
开 发 者 根 据DataBlock的 大 小 来 计 算API指 令 中 待 传 入 的repeatTime、dstBlkStride、srcblkStride、dstRepStride、srcRepStride等 参 数 值。
函 数 原 型
C++
__aicore__ inline constexpr int16_t GetDataBlockSizeInBytes()
参 数 说 明
无
返 回 值 说 明
当 前 芯 片 版 本 一 个DataBlock的 大 小,单 位 为Byte。
约 束 说 明
无
调 用 示 例
如 下 样 例 通 过GetDataBlockSizeInBytes获 取DataBlock的 大 小 并 计 算repeatTime的 值:
C++
int16_t dataBlockSize = AscendC::GetDataBlockSizeInBytes();
// 每 个repeat有8个DataBlock,可 计 算8 * dataBlockSize / sizeof(half)个 数,mask配 置 为 迭 代 内 所 有 元 素 均 参 与 计 算
uint64_t mask = 8 * dataBlockSize / sizeof(half);
// 共 计 算512个 数,除 以 每 个repeat参 与 计 算 的 元 素 个 数,得 到repeatTime
uint8_t repeatTime = 512 / mask;
// dstBlkStride, src0BlkStride, src1BlkStride = 1, 单 次 迭 代 内 数 据 连 续 读 取 和 写 入
// dstRepStride, src0RepStride, src1RepStride = 8, 相 邻 迭 代 间 数 据 连 续 读 取 和 写 入
AscendC::Add(dstLocal, src0Local, src1Local, mask, repeatTime, { 1, 1, 1, 8, 8, 8 });