昇腾社区首页
中文
注册
开发者
下载

ComputeVectorPQCode接口

API定义

int ComputeVectorPQCode(VectorArrayData *baseData, const DiskPQParams *params, uint8_t *pqCode);

功能描述

使用填充好PQ数据的params,对baseData中的底库数据进行量化,并将量化数据写入pqCode指向的缓存区中。

输入

VectorArrayData *baseData:指向填充好底库数据的VectorArrayData实例的指针。不能为空指针。用户可以根据自身内存的限制,在外层决定baseData中底库数据的大小。

const DiskPQParams *params:指向填充好PQ参数和训练好的PQ数据的DiskPQParams实例的指针。不能为空指针。

输出

uint8_t *pqCode:接收返回的压缩好的底库向量的指针。不能为空指针。

返回值

int:返回值为0时表示流程正常;返回值为-1时表示流程异常,且会将异常日志信息打印到cerr中。

约束说明

  • baseData数据填充要求如下:

    items指向的数据大小为length * dim * sizeof(float)字节。注意此处与ComputePQTable接口不同, 无需在每条数据前填充代替metadata的数据。

  • params成员变量填充要求如下:
    • dim除满足上述的范围限制要求之外,还需确保与sample中对应的dim字段保持一致。
    • pqTable必须指向内存大小为dim * 256 * sizeof(float)字节数的码本数据。用户需要保证指向的内存大小符合,否则有段错误风险。
    • offsets必须指向内存大小为(pqChunks + 1) * sizeof(uint32_t)字节数的offsets数据。用户需要保证指向的内存大小符合,否则有段错误风险。
    • 对tablesTransposed填充值无要求。
    • centroids必须指向内存大小为dim * sizeof(float)字节数的centroids数据。用户需要保证指向的内存大小符合,否则有段错误风险。
  • 用户需保证pqCode指向的空间大小至少有length * pqChunks字节数。其中,length为VectorArrayData参数;pqChunks为DiskPQParams参数。