krl_IP_table_lookup_fast_scan_bs96
接口定义
int krl_IP_table_lookup_fast_scan_bs96(int nsq, const uint8_t* codes, const uint8_t* LUT, uint16_t* dis, uint16_t threshold, uint32_t* lt_mask, size_t codes_size, size_t LUT_size, size_t dis_size, size_t lt_mask_size);
接口用途
单独处理数据类型为float的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与96个底库向量间的内积距离。根据距离类型决定比较规则,将距离值满足比较规则的底库向量的lt_mask设置为1,反之为0。
参数说明
参数名称 |
数据类型 |
描述 |
取值范围 |
|---|---|---|---|
nsq |
int |
子空间数量。 |
[1,256]且为偶数。 |
codes |
const uint8_t* |
码本,使用krl_pack_codes_4b(blocksize=96)处理后底库向量对应的索引。 |
限制长度为codes_size,其中“codes_size”为码本数组的长度。 |
LUT |
const uint8_t* |
各子空间中PQ质心与查询向量的uint8距离表。 |
限制长度为LUT_size,其中“LUT_size”为距离表数组的长度。 |
dis |
uint16_t* |
存储计算所得的距离结果。 |
限制长度为dis_size,其中“dis_size”为存储距离结果数组的长度。需预先分配内存。 |
threshold |
const uint16_t |
距离阈值。 |
限制为65535。 |
lt_mask |
uint32_t* |
过滤压缩结果。 |
限制长度为lt_mask_size,其中“lt_mask_size”为过滤压缩结果数组的长度。需预先分配内存。 |
codes_size |
size_t |
码本数组的长度。 |
nsq/2*96,其中“nsq”为子空间数量。 |
LUT_size |
size_t |
距离表数组的长度。 |
nsq*16,其中“nsq”为子空间数量。 |
dis_size |
size_t |
存储距离结果数组的长度。 |
限制为96。 |
lt_mask_size |
size_t |
过滤压缩结果数组的长度。 |
限制为3。 |
返回值
数据类型 |
说明 |
|---|---|
int |
正常运行时返回0,异常退出返回对应错误码。
|