文档
注册

Init

API定义

APP_ERROR Init(int dim, int capacity, AscendMetricType metricType, int64_t resourceSize = -1) override;

功能描述

初始化特征库参数,申请底库内存资源。

输入

int dim:特征向量的维度。

AscendMetricType metricType: 特征距离类别(向量内积、欧氏距离、余弦相似度)。

int capacity:底库最大容量,接口会根据“capacity”值申请 capacity * dim * sizeof(fp16) 字节内存数据。

int64_t resourceSize:提前申请Device的缓存资源,检索接口被调用时可以直接使用这里的资源,而不必调用aclrtmalloc接口去申请内存,达到优化加速。

默认取值“-1”,代表按默认size申请缓存资源(128MB),可以根据检索业务的数据量和Device上的资源使用情况来更精确地配置实际需要使用的size大小。

例如:query的“batch”“64”,底库总量为100万,而一个fp32数值占用4个字节,那么这里的“resourceSize”可以设置为:64 * 1000000 * 4 = 256,000,000 Byte,注意接口内部支持申请的最大缓存资源为4GB。

输出

返回值

APP_ERROR:调用返回状态,具体请参见接口调用返回值参考

约束说明

  • dim ∈ {32, 64, 128, 256, 384, 512, 1024}
  • metricType:IndexILFlat目前只实现了向量内积距离,即只支持“AscendMetricType::ASCEND_METRIC_INNER_PRODUCT”
  • capacity:接口允许为底库申请的内存上限设为 12,288,000,000 Byte,同时capacity的值域约束为 [0, 12000000]。
    • 以512维、fp16类型的底库向量为例,最大支持的“capacity”为1200万( 12288000000 / (512 * sizeof(fp_16)) )。
    • 对于256维、fp16类型的底库向量,尽管内存约束支持更大的capacity,capacity最大也只能设为1200万。
  • resourceSize:可以配置为-1或[134217728‬,4294967296]之间的值,数值的单位为Byte,相当于[128MB,4096MB]。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词