From dcbe1a0c3f0ed89d0f7439eceb4c2afcf86706d0 Mon Sep 17 00:00:00 2001 From: "yudong.cai" Date: Sat, 30 Nov 2019 11:26:40 +0800 Subject: [PATCH 1/3] #579 when gpu resources disabled, use cpu index instead --- CHANGELOG.md | 1 + core/src/db/engine/ExecutionEngineImpl.cpp | 24 ++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e83f996780..90a1358592 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ Please mark all change in change log and use the ticket from JIRA. - \#545 - Avoid dead circle of build index thread when error occurs - \#552 - Server down during building index_type: IVF_PQ using GPU-edition - \#561 - Milvus server should report exception/error message or terminate on mysql metadata backend error +- \#579 - Build index hang in GPU version when gpu_resources disabled - \#599 - Build index log is incorrect - \#602 - Optimizer specify wrong gpu_id - \#606 - No log generated during building index with CPU diff --git a/core/src/db/engine/ExecutionEngineImpl.cpp b/core/src/db/engine/ExecutionEngineImpl.cpp index 9c6a2a0f33..9f2b48642d 100644 --- a/core/src/db/engine/ExecutionEngineImpl.cpp +++ b/core/src/db/engine/ExecutionEngineImpl.cpp @@ -86,6 +86,9 @@ ExecutionEngineImpl::ExecutionEngineImpl(VecIndexPtr index, const std::string& l VecIndexPtr ExecutionEngineImpl::CreatetVecIndex(EngineType type) { + server::Config& config = server::Config::GetInstance(); + bool gpu_resource_enable = true; + config.GetGpuResourceConfigEnable(gpu_resource_enable); std::shared_ptr index; switch (type) { case EngineType::FAISS_IDMAP: { @@ -94,18 +97,20 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { } case EngineType::FAISS_IVFFLAT: { #ifdef MILVUS_GPU_VERSION - index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_MIX); -#else - index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_CPU); + if (gpu_resource_enable) + index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_MIX); + else #endif + index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_CPU); break; } case EngineType::FAISS_IVFSQ8: { #ifdef MILVUS_GPU_VERSION - index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_MIX); -#else - index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_CPU); + if (gpu_resource_enable) + index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_MIX); + else #endif + index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_CPU); break; } case EngineType::NSG_MIX: { @@ -120,10 +125,11 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { #endif case EngineType::FAISS_PQ: { #ifdef MILVUS_GPU_VERSION - index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_MIX); -#else - index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_CPU); + if (gpu_resource_enable) + index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_MIX); + else #endif + index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_CPU); break; } case EngineType::SPTAG_KDT: { From 525b6df0b6d67ded1384efe668687076cff0a4b6 Mon Sep 17 00:00:00 2001 From: "yudong.cai" Date: Sat, 30 Nov 2019 12:00:47 +0800 Subject: [PATCH 2/3] #579 update index build error message --- core/src/db/DBImpl.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/src/db/DBImpl.cpp b/core/src/db/DBImpl.cpp index 67769717c4..e2099739ed 100644 --- a/core/src/db/DBImpl.cpp +++ b/core/src/db/DBImpl.cpp @@ -1033,11 +1033,7 @@ DBImpl::BuildTableIndexRecursively(const std::string& table_id, const TableIndex if (!failed_files.empty()) { std::string msg = "Failed to build index for " + std::to_string(failed_files.size()) + ((failed_files.size() == 1) ? " file" : " files"); -#ifdef MILVUS_GPU_VERSION - msg += ", file size is too large or gpu memory is not enough."; -#else msg += ", please double check index parameters."; -#endif return Status(DB_ERROR, msg); } From de440acaa02ea1366be99ae46babb810b4f6dfb9 Mon Sep 17 00:00:00 2001 From: "yudong.cai" Date: Sat, 30 Nov 2019 14:03:46 +0800 Subject: [PATCH 3/3] #579 fix CPU version build error --- core/src/db/engine/ExecutionEngineImpl.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/db/engine/ExecutionEngineImpl.cpp b/core/src/db/engine/ExecutionEngineImpl.cpp index 9f2b48642d..1189d35b94 100644 --- a/core/src/db/engine/ExecutionEngineImpl.cpp +++ b/core/src/db/engine/ExecutionEngineImpl.cpp @@ -86,9 +86,11 @@ ExecutionEngineImpl::ExecutionEngineImpl(VecIndexPtr index, const std::string& l VecIndexPtr ExecutionEngineImpl::CreatetVecIndex(EngineType type) { +#ifdef MILVUS_GPU_VERSION server::Config& config = server::Config::GetInstance(); bool gpu_resource_enable = true; config.GetGpuResourceConfigEnable(gpu_resource_enable); +#endif std::shared_ptr index; switch (type) { case EngineType::FAISS_IDMAP: {