接口说明
KRL提供的接口如表1所示。
接口类型 |
接口名称 |
接口作用 |
|---|---|---|
Handle类接口 |
krl_create_distance_handle |
初始化构建一个KRLDistanceHandle实例,稠密距离计算时使用。 |
krl_create_reorder_handle |
初始化构建一个KRLDistanceHandle实例,重排计算时使用。 |
|
krl_clean_distance_handle |
析构KRLDistanceHandle实例,释放内存空间。 |
|
krl_create_LUT8b_handle |
初始化构建一个KRLLUT8bHandle实例,8bit查表累和时使用。 |
|
krl_clean_LUT8b_handle |
析构KRLLUT8bHandle实例,释放内存空间。 |
|
krl_get_idx_pointer |
获取KRLLUT8bHandle实例中存储的需要计算的底库向量ID。 |
|
krl_get_dist_pointer |
获取KRLLUT8bHandle实例中存储的距离数组首地址,在调用查表累和计算算子之前为随机数,调用之后为计算得到的距离。 |
|
距离计算接口 |
krl_L2sqr |
进行数据类型为float的一对一欧氏距离计算。 |
krl_L2sqr_f16f32 |
进行数据类型为fp16的一对一欧氏距离计算。 |
|
krl_L2sqr_u8u32 |
进行数据类型为uint8的一对一欧氏距离计算。 |
|
krl_ipdis |
进行数据类型为float的一对一内积距离计算。 |
|
krl_negative_ipdis_f16f32 |
进行数据类型为fp16的一对一内积距离计算。 |
|
krl_negative_ipdis_s8s32 |
进行数据类型为int8的一对一内积距离计算。 |
|
krl_L2sqr_by_idx |
进行数据类型为float的一对多欧氏距离计算。 |
|
krl_L2sqr_by_idx_f16f32 |
进行数据类型为fp16的一对多欧氏距离计算。 |
|
krl_L2sqr_by_idx_u8f32 |
进行数据类型为uint8的一对多欧氏距离计算。 |
|
krl_inner_product_by_idx |
进行数据类型为float的一对多内积距离计算。 |
|
krl_inner_product_by_idx_f16f32 |
进行数据类型为fp16的一对多内积距离计算。 |
|
krl_negative_inner_product_by_idx_f16f32 |
进行数据类型为fp16的一对多内积距离计算,对结果取反。 |
|
krl_inner_product_by_idx_s8f32 |
进行数据类型为int8的一对多内积距离计算。 |
|
krl_L2sqr_ny |
进行数据类型为float的一对多欧氏距离计算。 |
|
krl_L2sqr_ny_f16f32 |
进行数据类型为fp16的一对多欧氏距离计算。 |
|
krl_L2sqr_ny_u8f32 |
进行数据类型为uint8的一对多欧氏距离计算。 |
|
krl_L2sqr_ny_with_handle |
进行数据类型为float的一对多欧氏距离计算,底库向量与维度存储于Handle中。 |
|
krl_inner_product_ny |
进行数据类型为float的一对多内积距离计算。 |
|
krl_inner_product_ny_f16f32 |
进行数据类型为fp16的一对多内积距离计算。 |
|
krl_inner_product_ny_s8f32 |
进行数据类型为int8的一对多内积距离计算。 |
|
krl_inner_product_ny_with_handle |
进行数据类型为float的一对多内积距离计算,底库向量与维度存储于Handle中。 |
|
8bit查表累和接口 |
krl_table_lookup_8b_f32 |
使用8bit索引在float类型表项中查询距离并累和,将累和结果加上dis0后存入distance。 |
krl_table_lookup_8b_f32_by_idx |
使用8bit索引在float类型表项中查询距离并累和,将累和结果加上dis0后存入distance。ID在idx数组中出现的底库向量结果才会参与计算。 |
|
krl_table_lookup_8b_f32_with_handle |
使用8bit索引在float类型表项中查询距离并累和,将累和结果加上dis0后存入distance。idx数组与distance数组被包含在KRLLUT8bHandle实例中,ID在idx数组中出现的底库向量结果才会参与计算。 |
|
4bit查表累和接口 |
krl_fast_table_lookup_step |
批量处理数据类型为float的查询向量的4bit查表累和过滤压缩算子。算子支持计算至多16个查询向量与32个底库向量间的距离。在距离计算完成后,将其与阈值进行比较,满足比较条件的底库向量的lt_mask对应位置将会设置为1,反之为0。 |
krl_L2_table_lookup_fast_scan_bs64 |
单独处理数据类型为float的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与64个底库向量间的欧氏距离。根据距离类型决定比较规则,将距离值满足比较规则的底库向量的lt_mask设置为1,反之为0。 |
|
krl_IP_table_lookup_fast_scan_bs64 |
单独处理数据类型为float的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与64个底库向量间的内积距离。根据距离类型决定比较规则,将距离值满足比较规则的底库向量的lt_mask设置为1,反之为0。 |
|
krl_L2_table_lookup_fast_scan_bs96 |
单独处理数据类型为float的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与96个底库向量间的欧氏距离。根据距离类型决定比较规则,将距离值满足比较规则的底库向量的lt_mask设置为1,反之为0。 |
|
krl_IP_table_lookup_fast_scan_bs96 |
单独处理数据类型为float的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与96个底库向量间的内积距离。根据距离类型决定比较规则,将距离值满足比较规则的底库向量的lt_mask设置为1,反之为0。 |
|
krl_table_lookup_4b_f16 |
单独处理数据类型为fp16的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与多个底库向量间的内积距离,距离的初始值为dis_f16。此接口不会进行过滤压缩(与阈值进行比较)。 |
|
krl_pack_codes_4b |
单独处理数据类型为fp16的查询向量的4比特查表累和过滤压缩算子。计算1个查询向量与多个底库向量间的内积距离,距离的初始值为dis_f16。此接口不会进行过滤压缩(与阈值进行比较)。 |
|
重排接口 |
krl_reorder_2_vector |
计算1个查询向量与多个不连续底库向量间的高精度距离并排序。 |
krl_reorder_2_vector_continuous |
计算1个查询向量与多个连续底库向量间的高精度距离并排序。 |
|
保存/加载接口 |
krl_store_LUT8Handle |
将8bit查找表句柄保存到文件中。 |
krl_build_LUT8Handle_fromfile |
从文件中读取并重建8bit查找表句柄。 |
|
krl_store_distanceHandle |
将距离计算句柄保存到文件中。 |
|
krl_build_distanceHandle_fromfile |
从文件中读取并重建距离计算句柄。 |