asc_get_vms4_sr

产品支持情况

产品 是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

此接口用于获取执行asc_mrgsort4操作后的4个队列中,每个队列已经理过的Region Proposal个数。使用时,需要将asc_mrgsort4中的if_exhausted_suspension参数配置为true,该配置模式下某条队列耗尽后,MrgSort4指令停止。

函数原型

__aicore__ inline void asc_get_vms4_sr(uint16_t sorted_num[ASC_C_API_MRGSORT_ELEMENT_LEN])

参数说明

参数名 输入/输出 描述
sorted_num 输出 每个队列已经理过的Region Proposal个数。队列数量ASC_C_API_MRGSORT_ELEMENT_LEN值为4。

返回值说明

流水类型

PIPE_S

约束说明

  • 需和asc_mrgsort4操作配合使用,且需asc_mrgsort4中的if_exhausted_suspension参数配置为true。
  • 需通过同步操作确保asc_mrgsort4执行完成后再调用本接口获取结果。

调用示例

// 示例对4个已排序好的Region Proposal队列进行归并排序,每个队列包含32个元素。
constexpr uint16_t element_length = 32;
constexpr uint16_t array_length = element_length * 2;
// 每个元素包含float32的score和4字节的index,占8字节,相当于2个sizeof(float)。
__ubuf__ float src_workspace[array_length * 4];

__ubuf__ float* src[ASC_C_API_MRGSORT_ELEMENT_LEN];
__ubuf__ float dst[array_length * 4];

uint8_t repeat = 1;
uint8_t valid_bit = 0b1111;
bool if_exhausted_suspension = true;
src[0] = &src_workspace[0];
src[1] = &src_workspace[1 * array_length];
src[2] = &src_workspace[2 * array_length];
src[3] = &src_workspace[3 * array_length];

asc_mrgsort4(dst, src, repeat, element_length, element_length, element_length, element_length, if_exhausted_suspension, valid_bit);
asc_sync();

uint16_t sorted_num[ASC_C_API_MRGSORT_ELEMENT_LEN];
asc_get_vms4_sr(sorted_num);