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,异常退出返回对应错误码。
|