昇腾社区首页
中文
注册

AscendIndexConfig

AscendIndex需要使用对应的AscendIndexConfig执行对应资源的初始化,AscendIndexConfig中需要配置执行检索过程中的硬件资源和内存池大小等。

内存池大小单位为Byte,此参数用于指定Device侧预留的内存池大小。内存池用于存储昇腾硬件上进行距离计算的结果,底库规模较大时,建议预留更大的内存池大小。

成员介绍

成员

类型

说明

deviceList

std::vector<int>

Device侧设备ID。

resourceSize

int64_t

Device侧内存池大小,单位为字节,默认参数为头文件中的INDEX_DEFAULT_MEM

slim

bool

AscendIndexConfig成员变量,是否动态增加内存。

filterable

bool

AscendIndexConfig成员变量,是否按照id进行过滤。

dBlockSize

uint32_t

配置Device侧的blockSize。

接口说明

API定义

AscendIndexConfig()

功能描述

AscendIndexConfig默认构造函数,默认指定的deviceList为0(即指定NPU的第0个昇腾AI处理器作为AscendFaiss执行检索的异构计算平台),默认的资源池大小为32MB(32*1024*1024字节)。

输入

输出

返回值

约束说明

API定义

AscendIndexConfig(std::initializer_list<int> devices, int64_t resources = INDEX_DEFAULT_MEM, uint32_t blockSize = DEFAULT_BLOCK_SIZE)

功能描述

AscendIndexConfig的构造函数,生成AscendIndexConfig,此时根据“devices”中配置的值设置Device侧昇腾AI处理器资源,配置资源池大小。

输入

std::initializer_list<int> devices:Device侧设备ID。

int64_t resources:设备侧预置的内存池大小,单位为Byte,计算过程中存储中间结果的内存空间,用于避免计算过程中动态申请内存造成性能波动。默认参数为头文件中的“INDEX_DEFAULT_MEM”。该参数通过底库大小和search的batch数共同确定,在底库大于或等于1000万且batch数大于或等于16时建议设置1024MB。

uint32_t blockSize:配置Device侧的blockSize,约束tik算子一次计算的数据量,以及底库分片存储每片存储向量的size。默认值“DEFAULT_BLOCK_SIZE”为16384 * 16 = 262144。

输出

返回值

约束说明

  • “devices”需要为合法有效不重复的设备ID,最大数量为64。
  • “resources”配置的值不超过4 * 1024MB(4 * 1024 * 1024 * 1024字节)。

API定义

AscendIndexConfig(std::vector<int> devices, int64_t resources = INDEX_DEFAULT_MEM, uint32_t blockSize = DEFAULT_BLOCK_SIZE)

功能描述

AscendIndexConfig的构造函数,生成AscendIndexConfig,此时根据“devices”中配置的值设置Device侧昇腾AI处理器资源,配置资源池大小。

输入

std::vector<int> devices:Device侧设备ID。

int64_t resources:设备侧预置的内存池大小,单位为Byte,计算过程中存储中间结果的内存空间,用于避免计算过程中动态申请内存造成性能波动。默认参数为头文件中的“INDEX_DEFAULT_MEM”。该参数通过底库大小和search的batch数共同确定,在底库大于或等于1000万且batch数大于或等于16时建议设置1024MB。

uint32_t blockSize:配置Device侧的blockSize,约束tik算子一次计算的数据量,以及底库分片存储每片存储向量的size。默认值“DEFAULT_BLOCK_SIZE”为16384 * 16 = 262144。

输出

返回值

约束说明

  • “devices”需要为合法有效不重复的设备ID,最大数量为64。
  • “resources”配置的值不超过4 * 1024MB(4 * 1024 * 1024 * 1024字节)。