Commit 5970450d authored by 蔡宇东's avatar 蔡宇东 Committed by Jin Hai
Browse files

#705 fix search SQ8H crash without GPU resource (#706)

parent 8574b8b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ Please mark all change in change log and use the ticket from JIRA.
- \#658 - Milvus error out when building SQ8H index without GPU resources
- \#668 - Update badge of README
- \#670 - Random failure of unittest db_test::SEARCH_TEST
- \#705 - Fix search SQ8H crash without GPU resource

## Feature
- \#12 - Pure CPU version for Milvus
+1 −0
Original line number Diff line number Diff line
@@ -634,6 +634,7 @@ ExecutionEngineImpl::Init() {
    Status s = config.GetGpuResourceConfigBuildIndexResources(gpu_ids);
    if (!s.ok()) {
        gpu_num_ = knowhere::INVALID_VALUE;
        return s;
    }
    for (auto id : gpu_ids) {
        if (gpu_num_ == id) {
+17 −7
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@
#include "knowhere/index/vector_index/IndexIVFSQ.h"
#include "knowhere/index/vector_index/IndexNSG.h"
#include "knowhere/index/vector_index/IndexSPTAG.h"
#include "server/Config.h"
#include "utils/Exception.h"
#include "utils/Log.h"

#ifdef MILVUS_GPU_VERSION
@@ -145,6 +147,10 @@ GetVecIndexFactory(const IndexType& type, const Config& cfg) {
            index = std::make_shared<knowhere::GPUIVF>(gpu_device);
            break;
        }
        case IndexType::FAISS_IVFFLAT_MIX: {
            index = std::make_shared<knowhere::GPUIVF>(gpu_device);
            return std::make_shared<IVFMixIndex>(index, IndexType::FAISS_IVFFLAT_MIX);
        }
        case IndexType::FAISS_IVFPQ_GPU: {
            index = std::make_shared<knowhere::GPUIVFPQ>(gpu_device);
            break;
@@ -161,16 +167,20 @@ GetVecIndexFactory(const IndexType& type, const Config& cfg) {
            index = std::make_shared<knowhere::GPUIVFSQ>(gpu_device);
            break;
        }
        case IndexType::FAISS_IVFFLAT_MIX: {
            index = std::make_shared<knowhere::GPUIVF>(gpu_device);
            return std::make_shared<IVFMixIndex>(index, IndexType::FAISS_IVFFLAT_MIX);
        }

#endif
#ifdef CUSTOMIZATION
        case IndexType::FAISS_IVFSQ8_HYBRID: {
            server::Config& config = server::Config::GetInstance();
            bool gpu_resource_enable = true;
            config.GetGpuResourceConfigEnable(gpu_resource_enable);
            if (gpu_resource_enable) {
                index = std::make_shared<knowhere::IVFSQHybrid>(gpu_device);
                return std::make_shared<IVFHybridIndex>(index, IndexType::FAISS_IVFSQ8_HYBRID);
            } else {
                throw Exception(DB_ERROR, "No GPU resources for IndexType::FAISS_IVFSQ8_HYBRID");
            }
        }
#endif
#endif
        case IndexType::NSG_MIX: {  // TODO(linxj): bug.
            index = std::make_shared<knowhere::NSG>(gpu_device);