mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 03:13:22 +08:00
Merge pull request #140 from scsven/dev
New config opion use_gpu_threshold Former-commit-id: 119adf89b7800ff660ed1589ab829b42c7c2515c
This commit is contained in:
commit
7898b8e570
@ -10,6 +10,7 @@ Please mark all change in change log and use the ticket from JIRA.
|
|||||||
- \#90 - The server start error messages could be improved to enhance user experience
|
- \#90 - The server start error messages could be improved to enhance user experience
|
||||||
- \#104 - test_scheduler core dump
|
- \#104 - test_scheduler core dump
|
||||||
- \#115 - Using new structure for tasktable
|
- \#115 - Using new structure for tasktable
|
||||||
|
- \#139 - New config opion use_gpu_threshold
|
||||||
|
|
||||||
## Improvement
|
## Improvement
|
||||||
- \#64 - Improvement dump function in scheduler
|
- \#64 - Improvement dump function in scheduler
|
||||||
|
|||||||
@ -36,6 +36,7 @@ cache_config:
|
|||||||
engine_config:
|
engine_config:
|
||||||
use_blas_threshold: 20 # if nq < use_blas_threshold, use SSE, faster with fluctuated response times
|
use_blas_threshold: 20 # if nq < use_blas_threshold, use SSE, faster with fluctuated response times
|
||||||
# if nq >= use_blas_threshold, use OpenBlas, slower with stable response times
|
# if nq >= use_blas_threshold, use OpenBlas, slower with stable response times
|
||||||
|
use_gpu_threshold: 1000
|
||||||
|
|
||||||
resource_config:
|
resource_config:
|
||||||
search_resources: # define the GPUs used for search computation, must be in format: gpux
|
search_resources: # define the GPUs used for search computation, must be in format: gpux
|
||||||
|
|||||||
@ -21,11 +21,20 @@
|
|||||||
#include "scheduler/Utils.h"
|
#include "scheduler/Utils.h"
|
||||||
#include "scheduler/task/SearchTask.h"
|
#include "scheduler/task/SearchTask.h"
|
||||||
#include "scheduler/tasklabel/SpecResLabel.h"
|
#include "scheduler/tasklabel/SpecResLabel.h"
|
||||||
|
#include "server/Config.h"
|
||||||
#include "utils/Log.h"
|
#include "utils/Log.h"
|
||||||
|
|
||||||
namespace milvus {
|
namespace milvus {
|
||||||
namespace scheduler {
|
namespace scheduler {
|
||||||
|
|
||||||
|
LargeSQ8HPass::LargeSQ8HPass() {
|
||||||
|
server::Config& config = server::Config::GetInstance();
|
||||||
|
Status s = config.GetEngineConfigUseGpuThreshold(threshold_);
|
||||||
|
if (!s.ok()) {
|
||||||
|
threshold_ = std::numeric_limits<int32_t>::max();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
LargeSQ8HPass::Run(const TaskPtr& task) {
|
LargeSQ8HPass::Run(const TaskPtr& task) {
|
||||||
if (task->Type() != TaskType::SearchTask) {
|
if (task->Type() != TaskType::SearchTask) {
|
||||||
@ -40,7 +49,8 @@ LargeSQ8HPass::Run(const TaskPtr& task) {
|
|||||||
auto search_job = std::static_pointer_cast<SearchJob>(search_task->job_.lock());
|
auto search_job = std::static_pointer_cast<SearchJob>(search_task->job_.lock());
|
||||||
|
|
||||||
// TODO: future, Index::IVFSQ8H, if nq < threshold set cpu, else set gpu
|
// TODO: future, Index::IVFSQ8H, if nq < threshold set cpu, else set gpu
|
||||||
if (search_job->nq() < 100) {
|
|
||||||
|
if (search_job->nq() < threshold_) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,11 +34,14 @@ namespace scheduler {
|
|||||||
|
|
||||||
class LargeSQ8HPass : public Pass {
|
class LargeSQ8HPass : public Pass {
|
||||||
public:
|
public:
|
||||||
LargeSQ8HPass() = default;
|
LargeSQ8HPass();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool
|
bool
|
||||||
Run(const TaskPtr& task) override;
|
Run(const TaskPtr& task) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int32_t threshold_ = std::numeric_limits<int32_t>::max();
|
||||||
};
|
};
|
||||||
|
|
||||||
using LargeSQ8HPassPtr = std::shared_ptr<LargeSQ8HPass>;
|
using LargeSQ8HPassPtr = std::shared_ptr<LargeSQ8HPass>;
|
||||||
|
|||||||
@ -193,6 +193,12 @@ Config::ValidateConfig() {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t engine_use_gpu_threshold;
|
||||||
|
s = GetEngineConfigUseGpuThreshold(engine_use_gpu_threshold);
|
||||||
|
if (!s.ok()) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
/* resource config */
|
/* resource config */
|
||||||
std::string resource_mode;
|
std::string resource_mode;
|
||||||
s = GetResourceConfigMode(resource_mode);
|
s = GetResourceConfigMode(resource_mode);
|
||||||
@ -324,6 +330,11 @@ Config::ResetDefaultConfig() {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s = SetEngineConfigUseGpuThreshold(CONFIG_ENGINE_USE_GPU_THRESHOLD_DEFAULT);
|
||||||
|
if (!s.ok()) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
/* resource config */
|
/* resource config */
|
||||||
s = SetResourceConfigMode(CONFIG_RESOURCE_MODE_DEFAULT);
|
s = SetResourceConfigMode(CONFIG_RESOURCE_MODE_DEFAULT);
|
||||||
if (!s.ok()) {
|
if (!s.ok()) {
|
||||||
@ -656,6 +667,16 @@ Config::CheckEngineConfigOmpThreadNum(const std::string& value) {
|
|||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Status
|
||||||
|
Config::CheckEngineConfigUseGpuThreshold(const std::string& value) {
|
||||||
|
if (!ValidationUtil::ValidateStringIsNumber(value).ok()) {
|
||||||
|
std::string msg = "Invalid gpu threshold: " + value +
|
||||||
|
". Possible reason: engine_config.use_gpu_threshold is not a positive integer.";
|
||||||
|
return Status(SERVER_INVALID_ARGUMENT, msg);
|
||||||
|
}
|
||||||
|
return Status::OK();
|
||||||
|
}
|
||||||
|
|
||||||
Status
|
Status
|
||||||
Config::CheckResourceConfigMode(const std::string& value) {
|
Config::CheckResourceConfigMode(const std::string& value) {
|
||||||
if (value != "simple") {
|
if (value != "simple") {
|
||||||
@ -951,6 +972,19 @@ Config::GetEngineConfigOmpThreadNum(int32_t& value) {
|
|||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Status
|
||||||
|
Config::GetEngineConfigUseGpuThreshold(int32_t& value) {
|
||||||
|
std::string str =
|
||||||
|
GetConfigStr(CONFIG_ENGINE, CONFIG_ENGINE_USE_GPU_THRESHOLD, CONFIG_ENGINE_USE_GPU_THRESHOLD_DEFAULT);
|
||||||
|
Status s = CheckEngineConfigUseGpuThreshold(str);
|
||||||
|
if (!s.ok()) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = std::stoi(str);
|
||||||
|
return Status::OK();
|
||||||
|
}
|
||||||
|
|
||||||
Status
|
Status
|
||||||
Config::GetResourceConfigMode(std::string& value) {
|
Config::GetResourceConfigMode(std::string& value) {
|
||||||
value = GetConfigStr(CONFIG_RESOURCE, CONFIG_RESOURCE_MODE, CONFIG_RESOURCE_MODE_DEFAULT);
|
value = GetConfigStr(CONFIG_RESOURCE, CONFIG_RESOURCE_MODE, CONFIG_RESOURCE_MODE_DEFAULT);
|
||||||
@ -1203,6 +1237,17 @@ Config::SetEngineConfigOmpThreadNum(const std::string& value) {
|
|||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Status
|
||||||
|
Config::SetEngineConfigUseGpuThreshold(const std::string& value) {
|
||||||
|
Status s = CheckEngineConfigUseGpuThreshold(value);
|
||||||
|
if (!s.ok()) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetConfigValueInMem(CONFIG_DB, CONFIG_ENGINE_USE_GPU_THRESHOLD, value);
|
||||||
|
return Status::OK();
|
||||||
|
}
|
||||||
|
|
||||||
/* resource config */
|
/* resource config */
|
||||||
Status
|
Status
|
||||||
Config::SetResourceConfigMode(const std::string& value) {
|
Config::SetResourceConfigMode(const std::string& value) {
|
||||||
|
|||||||
@ -84,6 +84,8 @@ static const char* CONFIG_ENGINE_USE_BLAS_THRESHOLD = "use_blas_threshold";
|
|||||||
static const char* CONFIG_ENGINE_USE_BLAS_THRESHOLD_DEFAULT = "20";
|
static const char* CONFIG_ENGINE_USE_BLAS_THRESHOLD_DEFAULT = "20";
|
||||||
static const char* CONFIG_ENGINE_OMP_THREAD_NUM = "omp_thread_num";
|
static const char* CONFIG_ENGINE_OMP_THREAD_NUM = "omp_thread_num";
|
||||||
static const char* CONFIG_ENGINE_OMP_THREAD_NUM_DEFAULT = "0";
|
static const char* CONFIG_ENGINE_OMP_THREAD_NUM_DEFAULT = "0";
|
||||||
|
static const char* CONFIG_ENGINE_USE_GPU_THRESHOLD = "use_gpu_threshold";
|
||||||
|
static const char* CONFIG_ENGINE_USE_GPU_THRESHOLD_DEFAULT = "1000";
|
||||||
|
|
||||||
/* resource config */
|
/* resource config */
|
||||||
static const char* CONFIG_RESOURCE = "resource_config";
|
static const char* CONFIG_RESOURCE = "resource_config";
|
||||||
@ -166,6 +168,8 @@ class Config {
|
|||||||
CheckEngineConfigUseBlasThreshold(const std::string& value);
|
CheckEngineConfigUseBlasThreshold(const std::string& value);
|
||||||
Status
|
Status
|
||||||
CheckEngineConfigOmpThreadNum(const std::string& value);
|
CheckEngineConfigOmpThreadNum(const std::string& value);
|
||||||
|
Status
|
||||||
|
CheckEngineConfigUseGpuThreshold(const std::string& value);
|
||||||
|
|
||||||
/* resource config */
|
/* resource config */
|
||||||
Status
|
Status
|
||||||
@ -230,6 +234,8 @@ class Config {
|
|||||||
GetEngineConfigUseBlasThreshold(int32_t& value);
|
GetEngineConfigUseBlasThreshold(int32_t& value);
|
||||||
Status
|
Status
|
||||||
GetEngineConfigOmpThreadNum(int32_t& value);
|
GetEngineConfigOmpThreadNum(int32_t& value);
|
||||||
|
Status
|
||||||
|
GetEngineConfigUseGpuThreshold(int32_t& value);
|
||||||
|
|
||||||
/* resource config */
|
/* resource config */
|
||||||
Status
|
Status
|
||||||
@ -289,6 +295,8 @@ class Config {
|
|||||||
SetEngineConfigUseBlasThreshold(const std::string& value);
|
SetEngineConfigUseBlasThreshold(const std::string& value);
|
||||||
Status
|
Status
|
||||||
SetEngineConfigOmpThreadNum(const std::string& value);
|
SetEngineConfigOmpThreadNum(const std::string& value);
|
||||||
|
Status
|
||||||
|
SetEngineConfigUseGpuThreshold(const std::string& value);
|
||||||
|
|
||||||
/* resource config */
|
/* resource config */
|
||||||
Status
|
Status
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user