鲲鹏社区首页
中文
注册
开发者
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

krl_table_lookup_4b_f16

接口定义

int krl_table_lookup_4b_f16(size_t nsq, size_t ncode, const uint8_t* codes, const uint16_t* LUT, float* dis, uint16_t dis0, size_t codes_size, size_t LUT_size, size_t dis_size);

接口用途

单独处理数据类型为fp16的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与多个底库向量间的内积距离,距离的初始值为dis0。此接口不会进行过滤压缩(与阈值进行比较)。

参数说明

参数名称

数据类型

描述

取值范围

nsq

size_t

子空间数量。

[1,65535]且为偶数。

ncode

size_t

底库向量总数。

[1,2^30-1]

codes

const uint8_t*

码本,使用krl_pack_codes_4b(blocksize=64)处理后底库向量对应的索引。

限制长度为codes_size,其中“codes_size”为码本数组的长度。

LUT

const uint16_t*

各子空间中PQ质心与查询向量的fp16距离表。

限制长度为LUT_size,其中“LUT_size”为距离表数组的长度。

dis

float*

存储计算所得的距离结果。

限制长度为dis_size,其中“dis_size”为存储距离结果数组的长度。需预先分配内存。

dis0

uint16_t

初始距离。

浮点数。

codes_size

size_t

码本数组的长度。

nsq/2*ncode,其中“nsq”为子空间数量,“ncode”为底库向量总数。

LUT_size

size_t

距离表数组的长度。

nsq*16,其中“nsq”为子空间数量。

dis_size

size_t

存储距离结果数组的长度。

ncode,其中“ncode”为底库向量总数。

返回值

数据类型

说明

int

正常运行时返回0,异常退出返回对应错误码。

  • -1:非法指针。
  • -2:内存分配失败。
  • -3:非法入参。
  • -4:双重释放。
  • -5:不安全内存操作。
  • -6:IO失败。