下载
中文
注册

当前的特征检索是否支持多个Index分不同的线程执行搜索

问题现象

当前的特征检索是否支持多个Index分不同的线程执行搜索?

解决方案

在同一进程的多线程场景下,AscendIndexSQ、AscendIndexCluster、AscendIndexBinaryFlat、AscendIndexIVFSQ、AscendIndexIVFSQT、AscendIndexIVFSP、AscendIndexInt8Flat、AscendIndexFlat、IndexILFlat和AscendIndexTS检索支持多线程并发调用;其他特征检索不支持不同线程间共享一个Device。

开启多线程功能,需要设置“MX_INDEX_MULTITHREAD”环境变量为1,即export MX_INDEX_MULTITHREAD=1;如果设置为其他值或者不设置,则表示不开启多线程功能。

在多线程的场景中,不支持多线程并发调用的算法需要用户在使用前加锁,否则检索接口可能导致异常。

当前的特征检索内部会使用omp做性能加速,omp不支持与其他多线程机制混用。反复创建新线程使用omp会导致内存持续累加,因此建议使用固定的线程来运行检索任务。