当前的特征检索是否支持多个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会导致内存持续累加,因此建议使用固定的线程来运行检索任务。
父主题: FAQ