60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
/**
|
|
* Copyright 2023 by XGBoost contributors
|
|
*/
|
|
#include "error_msg.h"
|
|
|
|
#include <sstream> // for stringstream
|
|
|
|
#include "../collective/communicator-inl.h" // for GetRank
|
|
#include "xgboost/logging.h"
|
|
|
|
namespace xgboost::error {
|
|
std::string DeprecatedFunc(StringView old, StringView since, StringView replacement) {
|
|
std::stringstream ss;
|
|
ss << "`" << old << "` is deprecated since" << since << ", use `" << replacement << "` instead.";
|
|
return ss.str();
|
|
}
|
|
|
|
void WarnDeprecatedGPUHist() {
|
|
auto msg =
|
|
"The tree method `gpu_hist` is deprecated since 2.0.0. To use GPU training, set the `device` "
|
|
R"(parameter to CUDA instead.
|
|
|
|
E.g. tree_method = "hist", device = "cuda"
|
|
)";
|
|
LOG(WARNING) << msg;
|
|
}
|
|
|
|
void WarnManualUpdater() {
|
|
bool static thread_local logged{false};
|
|
if (logged) {
|
|
return;
|
|
}
|
|
LOG(WARNING)
|
|
<< "You have manually specified the `updater` parameter. The `tree_method` parameter "
|
|
"will be ignored. Incorrect sequence of updaters will produce undefined "
|
|
"behavior. For common uses, we recommend using `tree_method` parameter instead.";
|
|
logged = true;
|
|
}
|
|
|
|
void WarnDeprecatedGPUId() {
|
|
static thread_local bool logged{false};
|
|
if (logged) {
|
|
return;
|
|
}
|
|
auto msg = DeprecatedFunc("gpu_id", "2.0.0", "device");
|
|
msg += " E.g. device=cpu/cuda/cuda:0";
|
|
LOG(WARNING) << msg;
|
|
logged = true;
|
|
}
|
|
|
|
void WarnEmptyDataset() {
|
|
static thread_local bool logged{false};
|
|
if (logged) {
|
|
return;
|
|
}
|
|
LOG(WARNING) << "Empty dataset at worker: " << collective::GetRank();
|
|
logged = true;
|
|
}
|
|
} // namespace xgboost::error
|