MrgSort4
产 品 支 持 情 况
功 能 说 明
将 已 经 排 好 序 的 最 多4条Region Proposals队 列,排 列 并 合 并 成1条 队 列,结 果 按 照score域 由 大 到 小 排 序。
函 数 原 型
template <typename T>
__aicore__ inline void MrgSort4(const LocalTensor<T>& dst, const MrgSortSrcList<T>& src, const MrgSort4Info& params)
参 数 说 明
表 1 模 板 参 数 说 明
表 2 接 口 参 数 说 明
目 的 操 作 数,存 储 经 过 排 序 后 的Region Proposals。 类 型 为LocalTensor,支 持 的TPosition为VECIN/VECCALC/VECOUT。 LocalTensor的 起 始 地 址 需 要 保 证16字 节 对 齐(针 对half数 据 类 型),32字 节 对 齐(针 对float数 据 类 型)。 | ||
源 操 作 数,4个Region Proposals队 列,并 且 每 个Region Proposal队 列 都 已 经 排 好 序,类 型 为MrgSortSrcList结 构 体,具 体 定 义 如 下: template <typename T> struct MrgSortSrcList {
__aicore__ MrgSortSrcList() {}
__aicore__ MrgSortSrcList(const LocalTensor<T>& src1In, const LocalTensor<T>& src2In, const LocalTensor<T>& src3In,
const LocalTensor<T>& src4In)
{
src1 = src1In[0];
src2 = src2In[0];
src3 = src3In[0];
src4 = src4In[0];
}
LocalTensor<T> src1; // 第 一 个 已 经 排 好 序 的Region Proposals队 列
LocalTensor<T> src2; // 第 二 个 已 经 排 好 序 的Region Proposals队 列
LocalTensor<T> src3; // 第 三 个 已 经 排 好 序 的Region Proposals队 列
LocalTensor<T> src4; // 第 四 个 已 经 排 好 序 的Region Proposals队 列
};Region Proposal队 列 的 数 据 类 型 与 目 的 操 作 数 保 持 一 致。src1、src2、src3、src4类 型 为LocalTensor,支 持 的TPosition为VECIN/VECCALC/VECOUT。 LocalTensor的 起 始 地 址 需 要 保 证16字 节 对 齐(针 对half数 据 类 型),32字 节 对 齐(针 对float数 据 类 型)。 | ||
排 序 所 需 参 数,类 型 为MrgSort4Info结 构 体。 具 体 定 义 请 参 考${INSTALL_DIR}/include/ascendc/basic_api/interface/kernel_struct_proposal.h,${INSTALL_DIR}请 替 换 为CANN软 件 安 装 后 文 件 存 储 路 径。 参 数 说 明 请 参 考表3。 |
表 3 MrgSort4Info参 数 说 明
约 束 说 明
当 存 在proposal[i]与proposal[j]的score值 相 同 时,如 果i>j,则proposal[j]将 首 先 被 选 出 来,排 在 前 面。
操 作 数 地 址 对 齐 要 求 请 参 见通 用 地 址 对 齐 约 束。
不 支 持 源 操 作 数 与 目 的 操 作 数 之 间 存 在 地 址 重 叠。
调 用 示 例
详 细 示 例 请 参 考RegionProposalSort样 例。
接 口 使 用 样 例
// Region Proposals的 创 建 如 下 所 示
// AscendC::ProposalConcat(vconcatWorkLocal[0], srcLocal[0], repeat, mode);
// AscendC::RpSort16(vconcatWorkLocal[0], vconcatWorkLocal[0], repeat);
// vconcatWorkLocal为 已 经 创 建 并 且 完 成 排 序 的4个Region Proposals,每 个Region Proposal数 目 是16个
// 输 入 数 据 先 经 过ProposalConcat将 连 续 元 素 合 入Region Proposal内 对 应 位 置,然 后 经 过RpSort16对Region Proposals中 的score域 对 其 进 行 排 序 才 是 各 个vconcatWorkLocal。
struct MrgSortSrcList<half> srcList(vconcatWorkLocal[0], vconcatWorkLocal[1], vconcatWorkLocal[2], vconcatWorkLocal[3]);
// 四 个 源Region Proposals队 列 的 长 度 都 是16
uint16_t elementLengths[4] = {16, 16, 16, 16};
// false表 示 某 条 队 列 耗 尽 后,指 令 不 需 要 停 止。15表 示 四 条 队 列 都 是 有 效 队 列。repeat=1,1次 迭 代
struct MrgSort4Info srcInfo(elementLengths, false, 15, 1);
AscendC::MrgSort4(dstLocal, srcList, srcInfo);
示 例 结 果
输 入 数 据(src_gm):
[-38.1 82.7 -40.75 -54.62 21.67 -58.53 25.94 -79.5 -61.44
26.7 -27.45 48.78 86.75 -18.1 -58.8 62.38 46.38 -78.94
-87.7 -13.81 -13.25 46.94 -47.8 -50.44 34.16 20.3 80.1
-94.1 52.4 -42.75 83.4 80.44 -66.8 -82.7 -91.44 -95.6
66.2 -30.97 -36.53 61.66 24.92 -45.1 38.97 -34.62 -69.8
59.1 34.22 11.695 -33.47 52.1 -4.832 46.88 56.78 71.4
13.29 -35.78 52.44 -46.03 83.8 83.56 71.3 -9.086 -65.06
46.25 ]
// 输 入 数 据 先 经 过ProposalConcat将 连 续 元 素 合 入Region Proposal内 对 应 位 置,然 后 经 过RpSort16对Region Proposals中 的score域 对 其 进 行 排 序 后 变 成4个vconcatWorkLocal,4个 合 并 后 是 输 出。
输 出 数 据(dst_gm):
[
0.0 0.0 0.0 0.0 86.75 0.0 0.0 0.0
0.0 0.0 0.0 83.8 0.0 0.0 0.0 0.0
0.0 0.0 83.56 0.0 0.0 0.0 0.0 0.0
0.0 83.4 0.0 0.0 0.0 0.0 0.0 0.0
82.7 0.0 0.0 0.0 0.0 0.0 0.0 80.44
0.0 0.0 0.0 0.0 0.0 0.0 0.0 80.1
0.0 0.0 0.0 0.0 0.0 0.0 71.4 0.0
0.0 0.0 0.0 0.0 0.0 71.3 0.0 0.0
0.0 0.0 0.0 0.0 66.2 0.0 0.0 0.0
0.0 0.0 0.0 62.38 0.0 0.0 0.0 0.0
0.0 0.0 61.66 0.0 0.0 0.0 0.0 0.0
0.0 59.1 0.0 0.0 0.0 0.0 0.0 0.0
56.78 0.0 0.0 0.0 0.0 0.0 0.0 52.44
0.0 0.0 0.0 0.0 0.0 0.0 52.4 0.0
0.0 0.0 0.0 0.0 0.0 52.1 0.0 0.0
0.0 0.0 0.0 0.0 0.0 48.78 0.0 0.0
0.0 0.0 0.0 0.0 46.94 0.0 0.0 0.0
0.0 0.0 0.0 46.88 0.0 0.0 0.0 0.0
0.0 0.0 46.38 0.0 0.0 0.0 0.0 0.0
0.0 46.25 0.0 0.0 0.0 0.0 0.0 0.0
38.97 0.0 0.0 0.0 0.0 0.0 0.0 34.22
0.0 0.0 0.0 0.0 0.0 0.0 34.16 0.0
0.0 0.0 0.0 0.0 0.0 26.7 0.0 0.0
0.0 0.0 0.0 0.0 25.94 0.0 0.0 0.0
0.0 0.0 0.0 24.92 0.0 0.0 0.0 0.0
0.0 0.0 21.67 0.0 0.0 0.0 0.0 0.0
0.0 20.3 0.0 0.0 0.0 0.0 0.0 0.0
0.0 13.29 0.0 0.0 0.0 0.0 0.0 0.0
11.695 0.0 0.0 0.0 0.0 0.0 0.0 -4.832
0.0 0.0 0.0 0.0 0.0 0.0 -9.086 0.0
0.0 0.0 0.0 0.0 0.0 -13.25 0.0 0.0
0.0 0.0 0.0 0.0 -13.81 0.0 0.0 0.0
0.0 0.0 0.0 -18.1 0.0 0.0 0.0 0.0
0.0 0.0 0.0 -27.45 0.0 0.0 0.0 0.0
0.0 0.0 -30.97 0.0 0.0 0.0 0.0 0.0
0.0 -33.47 0.0 0.0 0.0 0.0 0.0 0.0
-34.62 0.0 0.0 0.0 0.0 0.0 0.0 -35.78
0.0 0.0 0.0 0.0 0.0 0.0 -36.53 0.0
0.0 0.0 0.0 0.0 0.0 -38.1 0.0 0.0
0.0 0.0 0.0 0.0 -40.75 0.0 0.0 0.0
0.0 0.0 0.0 -42.75 0.0 0.0 0.0 0.0
0.0 0.0 -45.1 0.0 0.0 0.0 0.0 0.0
0.0 -46.03 0.0 0.0 0.0 0.0 0.0 0.0
-47.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-50.44 0.0 0.0 0.0 0.0 0.0 0.0 -54.62
0.0 0.0 0.0 0.0 0.0 0.0 -58.53 0.0
0.0 0.0 0.0 0.0 0.0 -58.8 0.0 0.0
0.0 0.0 0.0 0.0 -61.44 0.0 0.0 0.0
0.0 0.0 0.0 -65.06 0.0 0.0 0.0 0.0
0.0 0.0 -66.8 0.0 0.0 0.0 0.0 0.0
0.0 -69.8 0.0 0.0 0.0 0.0 0.0 0.0
-78.94 0.0 0.0 0.0 0.0 0.0 0.0 -79.5
0.0 0.0 0.0 0.0 0.0 0.0 -82.7 0.0
0.0 0.0 0.0 0.0 0.0 -87.7 0.0 0.0
0.0 0.0 0.0 0.0 -91.44 0.0 0.0 0.0
0.0 0.0 0.0 -94.1 0.0 0.0 0.0 0.0
0.0 0.0 0.0 -95.6 0.0 0.0 0.0 0.0
]