* Add management functions for global configuration: XGBSetGlobalConfig(), XGBGetGlobalConfig(). * Add Python interface: set_config(), get_config(), and config_context(). * Add unit tests for Python * Add R interface: xgb.set.config(), xgb.get.config() * Add unit tests for R Co-authored-by: Jiaming Yuan <jm.yuan@outlook.com>
53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
// Copyright (c) 2015 by Contributors
|
|
// This file contains the customization implementations of R module
|
|
// to change behavior of libxgboost
|
|
|
|
#include <xgboost/logging.h>
|
|
#include "../../src/common/random.h"
|
|
#include "./xgboost_R.h"
|
|
|
|
// redirect the messages to R's console.
|
|
namespace dmlc {
|
|
void CustomLogMessage::Log(const std::string& msg) {
|
|
Rprintf("%s\n", msg.c_str());
|
|
}
|
|
} // namespace dmlc
|
|
|
|
namespace xgboost {
|
|
ConsoleLogger::~ConsoleLogger() {
|
|
if (cur_verbosity_ == LogVerbosity::kIgnore ||
|
|
cur_verbosity_ <= GlobalVerbosity()) {
|
|
dmlc::CustomLogMessage::Log(log_stream_.str());
|
|
}
|
|
}
|
|
TrackerLogger::~TrackerLogger() {
|
|
dmlc::CustomLogMessage::Log(log_stream_.str());
|
|
}
|
|
} // namespace xgboost
|
|
|
|
namespace xgboost {
|
|
namespace common {
|
|
|
|
// redirect the nath functions.
|
|
bool CheckNAN(double v) {
|
|
return ISNAN(v);
|
|
}
|
|
#if !defined(XGBOOST_USE_CUDA)
|
|
double LogGamma(double v) {
|
|
return lgammafn(v);
|
|
}
|
|
#endif // !defined(XGBOOST_USE_CUDA)
|
|
// customize random engine.
|
|
void CustomGlobalRandomEngine::seed(CustomGlobalRandomEngine::result_type val) {
|
|
// ignore the seed
|
|
}
|
|
|
|
// use R's PRNG to replacd
|
|
CustomGlobalRandomEngine::result_type
|
|
CustomGlobalRandomEngine::operator()() {
|
|
return static_cast<result_type>(
|
|
std::floor(unif_rand() * CustomGlobalRandomEngine::max()));
|
|
}
|
|
} // namespace common
|
|
} // namespace xgboost
|