6 #ifndef XGBOOST_BASE_H_ 7 #define XGBOOST_BASE_H_ 20 #ifndef XGBOOST_STRICT_R_MODE 21 #define XGBOOST_STRICT_R_MODE 0 22 #endif // XGBOOST_STRICT_R_MODE 30 #ifndef XGBOOST_LOG_WITH_TIME 31 #define XGBOOST_LOG_WITH_TIME 1 32 #endif // XGBOOST_LOG_WITH_TIME 37 #ifndef XGBOOST_CUSTOMIZE_LOGGER 38 #define XGBOOST_CUSTOMIZE_LOGGER XGBOOST_STRICT_R_MODE 39 #endif // XGBOOST_CUSTOMIZE_LOGGER 44 #ifndef XGBOOST_CUSTOMIZE_GLOBAL_PRNG 45 #define XGBOOST_CUSTOMIZE_GLOBAL_PRNG XGBOOST_STRICT_R_MODE 46 #endif // XGBOOST_CUSTOMIZE_GLOBAL_PRNG 51 #if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ > 4) 52 #define XGBOOST_ALIGNAS(X) alignas(X) 54 #define XGBOOST_ALIGNAS(X) 55 #endif // defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ > 4) 57 #if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ > 4) && \ 59 #include <parallel/algorithm> 60 #define XGBOOST_PARALLEL_SORT(X, Y, Z) __gnu_parallel::sort((X), (Y), (Z)) 61 #define XGBOOST_PARALLEL_STABLE_SORT(X, Y, Z) \ 62 __gnu_parallel::stable_sort((X), (Y), (Z)) 63 #elif defined(_MSC_VER) && (!__INTEL_COMPILER) 65 #define XGBOOST_PARALLEL_SORT(X, Y, Z) concurrency::parallel_sort((X), (Y), (Z)) 66 #define XGBOOST_PARALLEL_STABLE_SORT(X, Y, Z) std::stable_sort((X), (Y), (Z)) 68 #define XGBOOST_PARALLEL_SORT(X, Y, Z) std::sort((X), (Y), (Z)) 69 #define XGBOOST_PARALLEL_STABLE_SORT(X, Y, Z) std::stable_sort((X), (Y), (Z)) 70 #endif // GLIBC VERSION 73 #define XGBOOST_EXPECT(cond, ret) __builtin_expect((cond), (ret)) 75 #define XGBOOST_EXPECT(cond, ret) (cond) 76 #endif // defined(__GNUC__) 81 #if defined (__CUDA__) || defined(__NVCC__) 82 #define XGBOOST_DEVICE __host__ __device__ 84 #define XGBOOST_DEVICE 85 #endif // defined (__CUDA__) || defined(__NVCC__) 88 #if !defined(XGBOOST_MM_PREFETCH_PRESENT) && !defined(XGBOOST_BUILTIN_PREFETCH_PRESENT) 90 #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64))) || defined(__INTEL_COMPILER) 92 #define XGBOOST_MM_PREFETCH_PRESENT 93 #define XGBOOST_BUILTIN_PREFETCH_PRESENT 94 #elif defined(__GNUC__) 96 #define XGBOOST_BUILTIN_PREFETCH_PRESENT 99 #endif // !defined(XGBOOST_MM_PREFETCH_PRESENT) && !defined() 131 template <
typename T>
153 : grad_(g.grad_), hess_(g.hess_) {}
157 template <
typename T2>
176 g.grad_ = grad_ + rhs.grad_;
177 g.hess_ = hess_ + rhs.hess_;
191 g.grad_ = grad_ - rhs.grad_;
192 g.hess_ = hess_ - rhs.hess_;
198 static_cast<float>(value));
210 return grad_ * 1e-4f;
214 return hess_ * 1e-4f;
218 grad_ =
static_cast<int64_t
>(std::round(g * 1e4));
222 hess_ =
static_cast<int64_t
>(std::round(h * 1e4));
238 using Args = std::vector<std::pair<std::string, std::string> >;
254 #if DMLC_USE_CXX11 && defined(__GNUC__) && !defined(__clang_version__) 255 #if __GNUC__ == 4 && __GNUC_MINOR__ < 8 258 #endif // __GNUC__ == 4 && __GNUC_MINOR__ < 8 259 #endif // DMLC_USE_CXX11 && defined(__GNUC__) && !defined(__clang_version__) 262 #endif // XGBOOST_BASE_H_ XGBOOST_DEVICE GradientPairInternal(const GradientPairInternal< T2 > &g)
Definition: base.h:158
float bst_float
float type, used for storing statistics
Definition: base.h:111
XGBOOST_DEVICE GradientPairInternal< T > & operator-=(const GradientPairInternal< T > &rhs)
Definition: base.h:181
int32_t bst_int
integer type.
Definition: base.h:107
XGBOOST_DEVICE GradientPairInternal(int value)
Definition: base.h:196
std::vector< std::pair< std::string, std::string > > Args
Definition: base.h:238
dmlc::omp_ulong omp_ulong
define unsigned long for openmp loop
Definition: base.h:244
uint32_t bst_feature_t
Type for data column (feature) index.
Definition: base.h:114
dmlc::omp_uint bst_omp_uint
define unsigned int for openmp loop
Definition: base.h:246
XGBOOST_DEVICE GradientPairInternal()
Definition: base.h:144
int32_t XGBoostVersionT
Type used for representing version number in binary form.
Definition: base.h:248
XGBOOST_DEVICE float GetGrad() const
Definition: base.h:163
uint64_t bst_ulong
unsigned long integers
Definition: base.h:109
Implementation of gradient statistics pair. Template specialisation may be used to overload different...
Definition: base.h:132
XGBOOST_DEVICE GradientPairInternal(float grad, float hess)
Definition: base.h:146
uint32_t bst_group_t
Type for ranking group index.
Definition: base.h:125
int32_t bst_node_t
Type for tree node index.
Definition: base.h:123
XGBOOST_DEVICE GradientPairInternal< T > & operator+=(const GradientPairInternal< T > &rhs)
Definition: base.h:166
#define XGBOOST_DEVICE
Tag function as usable by device.
Definition: base.h:84
std::size_t bst_row_t
Type for data row index.
Definition: base.h:121
namespace of xgboost
Definition: base.h:102
XGBOOST_DEVICE GradientPairInternal(const GradientPairInternal< T > &g)
Definition: base.h:152
friend std::ostream & operator<<(std::ostream &os, const GradientPairInternal< T > &g)
Definition: base.h:201
constexpr bst_float kRtEps
small eps gap for minimum split decision.
Definition: base.h:241
XGBOOST_DEVICE GradientPairInternal< T > operator-(const GradientPairInternal< T > &rhs) const
Definition: base.h:188
XGBOOST_DEVICE GradientPairInternal< T > operator+(const GradientPairInternal< T > &rhs) const
Definition: base.h:173
uint32_t bst_uint
unsigned integer type used for feature index.
Definition: base.h:105
XGBOOST_DEVICE float GetHess() const
Definition: base.h:164
T ValueT
Definition: base.h:142