GetCmpMask(ISASI)
产 品 支 持 情 况
功 能 说 明
头 文 件 路 径 为:"basic_api/kernel_operator_vec_cmpsel_intf.h"。
此 接 口 用 于 获 取Compare(结 果 存 入 寄 存 器)指 令 的 比 较 结 果。
Compare(结 果 存 入 寄 存 器)指 令 会 将 比 较 后 的 结 果 写 入CmpMask寄 存 器 中,使 用GetCmpMask接 口 可 以 获 取 到CmpMask寄 存 器 的 值 从 而 得 到Compare的 结 果。
函 数 原 型
C++
template<typename T>
__aicore__ inline void GetCmpMask(const LocalTensor<T>& dst)
参 数 说 明
表 1 模 板 参 数 说 明
| 参 数 名 | 描 述 |
|---|---|
| T | 操 作 数 的 数 据 类 型。 |
表 2 参 数 说 明
| 参 数 名 | 输 入/输 出 | 描 述 |
|---|---|---|
| dst | 输 出 | Compare(结 果 存 入 寄 存 器)指 令 的 比 较 结 果。 类 型 为LocalTensor,支 持 的TPosition为VECIN/VECCALC/VECOUT。 LocalTensor的 起 始 地 址 需 要16字 节 对 齐。 |
数 据 类 型
支 持 数 据 类 型 为:b8、b16、b32。
返 回 值 说 明
无
约 束 说 明
dst的 空 间 大 小 不 能 少 于128字 节。
调 用 示 例
Compare(结 果 存 入 寄 存 器)指 令 的 结 果 使 用uint8_t类 型 数 据 存 储,因 此dstLocal使 用uint8_t类 型。完 整 的 示 例 参 考Compare类 样 例。
C++
AscendC::LocalTensor<float> src0Local;
AscendC::LocalTensor<float> src1Local;
AscendC::LocalTensor<uint8_t> dstLocal;
uint64_t mask = 256 / sizeof(float); // 256为 每 个 迭 代 处 理 的 字 节 数,结 果 为64
AscendC::BinaryRepeatParams repeatParams = { 1, 1, 1, 8, 8, 8 };
AscendC::Compare(src0Local, src1Local, AscendC::CMPMODE::LT, mask, repeatParams);
AscendC::GetCmpMask(dstLocal); // mask为0x40,比 较 数 据 类 型 为float,则 每 次 迭 代 的32B里 只 有 第7个float数 字 参 与compare
Text
输 出 示 例:
src0Local: [1, 2, 3, 4, 5, 6, 7, 8, 9, ...256]
src1Local: [2, 3, 4, 5, 6, 7, 8, 9, ...257]
mask后 参 与 比 较 的 数
src0Local: [1, 8, 16, ...256]
src1Local: [2, 10, 18, ...257]
GetCmpMask结 果:[256, 256, 256, 256, 256, 256, 256, 256]