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

接口说明

KRL提供的接口如表1所示。

表1 KRL提供的接口

接口类型

接口名称

接口作用

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

从文件中读取并重建距离计算句柄。