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。 |
输出 |
无 |
返回值 |
无 |
约束说明 |
|
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。 |
输出 |
无 |
返回值 |
无 |
约束说明 |
|