获取MrgSort或MrgSort4已经处理过的队列里的区域提案数,并依次存储在四个List入参中。
使用该接口,需要将MrgSort/MrgSort4中的MrgSort4Info.ifExhaustedSuspension参数配置为true,该配置模式下某条队列耗尽后,MrgSort/MrgSort4指令即停止。
__aicore__ inline void GetMrgSortResult(uint16_t &mrgSortList1, uint16_t &mrgSortList2, uint16_t &mrgSortList3, uint16_t &mrgSortList4)
参数名 |
输入/输出 |
描述 |
|---|---|---|
mrgSortList1 |
输入/输出 |
类型为uint16_t,表示MrgSort或MrgSrot4指令第一个队列里已经处理过的区域提案数。 |
mrgSortList2 |
输入/输出 |
类型为uint16_t,表示MrgSort或MrgSrot4指令第二个队列里已经处理过的区域提案数。 |
mrgSortList3 |
输入/输出 |
类型为uint16_t,表示MrgSort或MrgSrot4指令第三个队列里已经处理过的区域提案数。 |
mrgSortList4 |
输入/输出 |
类型为uint16_t,表示MrgSort或MrgSrot4指令第四个队列里已经处理过的区域提案数。 |
MrgSort或MrgSort4指令里的队列见表2。
MrgSort或MrgSort4指令中已经处理过的队列里的区域提案数。
Atlas推理系列产品AI Core
Atlas A2训练系列产品/Atlas 800I A2推理产品
Atlas推理系列产品AI Core,GetMrgSortResult接口需要配合MrgSort4指令使用,获取MrgSort4指令处理过的队列里的区域提案数。
Atlas A2训练系列产品/Atlas 800I A2推理产品,GetMrgSortResult接口需要配合MrgSort指令使用,获取MrgSort指令处理过的队列里的区域提案数。
LocalTensor<float> dstLocal;
LocalTensor<float> workLocal;
LocalTensor<float> src0Local;
LocalTensor<uint32_t> src1Local;
Sort32(workLocal, src0Local, src1Local, 1);
uint16_t elementLengths[4] = { 0 };
uint32_t sortedNum[4] = { 0 };
elementLengths[0] = 32;
elementLengths[1] = 32;
elementLengths[2] = 32;
elementLengths[3] = 32;
uint16_t validBit = 0b1111;
MrgSortSrcList<float> srcList;
srcList.src1 = workLocal[0];
srcList.src2 = workLocal[32 * 1 * 2];
srcList.src3 = workLocal[32 * 2 * 2];
srcList.src4 = workLocal[32 * 3 * 2];
MrgSort4Info mrgSortInfo(elementLengths, true, validBit, 1);
MrgSort(dstLocal, srcList, mrgSortInfo);
uint16_t mrgRes1 = 0;
uint16_t mrgRes2 = 0;
uint16_t mrgRes3 = 0;
uint16_t mrgRes4 = 0;
GetMrgSortResult(mrgRes1, mrgRes2, mrgRes3, mrgRes4);
LocalTensor<float> dstLocal;
LocalTensor<float> workLocal;
LocalTensor<float> src0Local;
RpSort16(workLocal, src0Local, 1);
uint16_t elementLengths[4] = { 0 };
uint32_t sortedNum[4] = { 0 };
elementLengths[0] = 32;
elementLengths[1] = 32;
elementLengths[2] = 32;
elementLengths[3] = 32;
uint16_t validBit = 0b1111;
MrgSortSrcList<float> srcList;
srcList.src1 = workLocal[0];
srcList.src2 = workLocal[32 * 1 * 2];
srcList.src3 = workLocal[32 * 2 * 2];
srcList.src4 = workLocal[32 * 3 * 2];
MrgSort4Info mrgSortInfo(elementLengths, true, validBit, 1);
MrgSort4(dstLocal, srcList, mrgSortInfo);
uint16_t mrgRes1 = 0;
uint16_t mrgRes2 = 0;
uint16_t mrgRes3 = 0;
uint16_t mrgRes4 = 0;
GetMrgSortResult(mrgRes1, mrgRes2, mrgRes3, mrgRes4);