From 1b0dd8ee90f0ba8d345888d4de8435e6f74d2ebf Mon Sep 17 00:00:00 2001 From: starlord Date: Tue, 6 Aug 2019 17:42:35 +0800 Subject: [PATCH] MS-312 Set openmp thread number by config Former-commit-id: 7ddafa3aa22d0455b343d07cc37b1a30d1ac29a1 --- cpp/conf/server_config.template | 2 +- cpp/src/server/DBWrapper.cpp | 12 +++++------- cpp/src/server/ServerConfig.h | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/cpp/conf/server_config.template b/cpp/conf/server_config.template index ec88b28c0a..11eb9f9eeb 100644 --- a/cpp/conf/server_config.template +++ b/cpp/conf/server_config.template @@ -44,4 +44,4 @@ engine_config: nlist: 16384 use_blas_threshold: 20 metric_type: L2 # compare vectors by euclidean distance(L2) or inner product(IP), optional: L2 or IP - omp_thread_occupancy: 0.75 # how many compute threads be used, this is a percent value compare to system cpu core number(for instance: cpu core is 4, then 0.75 means use 3 compute threads) + omp_thread_num: 0 # how many compute threads be used by engine, 0 means use all cpu core to compute diff --git a/cpp/src/server/DBWrapper.cpp b/cpp/src/server/DBWrapper.cpp index b4c89ed87d..4487a37e19 100644 --- a/cpp/src/server/DBWrapper.cpp +++ b/cpp/src/server/DBWrapper.cpp @@ -62,13 +62,11 @@ DBWrapper::DBWrapper() { // engine config ConfigNode& engine_config = ServerConfig::GetInstance().GetConfig(CONFIG_ENGINE); - float omp_thread_rate = engine_config.GetFloatValue(CONFIG_OMP_THREAD_RATE, 0.75); - uint32_t cpu_count = 1; - CommonUtil::GetSystemAvailableThreads(cpu_count); - float thread_count = omp_thread_rate*(float)cpu_count; - int32_t omp_thread = (int32_t)round(thread_count); - omp_set_num_threads(omp_thread); - SERVER_LOG_DEBUG << "Openmp thread number = " << omp_thread; + int32_t omp_thread = engine_config.GetInt32Value(CONFIG_OMP_THREAD_NUM, 0); + if(omp_thread > 0) { + omp_set_num_threads(omp_thread); + SERVER_LOG_DEBUG << "Specify openmp thread number: " << omp_thread; + } //set archive config engine::ArchiveConf::CriteriaT criterial; diff --git a/cpp/src/server/ServerConfig.h b/cpp/src/server/ServerConfig.h index 48e44fc4e6..e899d1f8d6 100644 --- a/cpp/src/server/ServerConfig.h +++ b/cpp/src/server/ServerConfig.h @@ -53,7 +53,7 @@ static const std::string CONFIG_NPROBE = "nprobe"; static const std::string CONFIG_NLIST = "nlist"; static const std::string CONFIG_DCBT = "use_blas_threshold"; static const std::string CONFIG_METRICTYPE = "metric_type"; -static const std::string CONFIG_OMP_THREAD_RATE = "omp_thread_occupancy"; +static const std::string CONFIG_OMP_THREAD_NUM = "omp_thread_num"; class ServerConfig { public: