6 #ifndef XGBOOST_BASE_H_ 
 7 #define XGBOOST_BASE_H_ 
 22 #ifndef XGBOOST_STRICT_R_MODE 
 23 #define XGBOOST_STRICT_R_MODE 0 
 32 #ifndef XGBOOST_LOG_WITH_TIME 
 33 #define XGBOOST_LOG_WITH_TIME 1 
 39 #ifndef XGBOOST_CUSTOMIZE_GLOBAL_PRNG 
 40 #define XGBOOST_CUSTOMIZE_GLOBAL_PRNG 0 
 46 #if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ > 4) 
 47 #define XGBOOST_ALIGNAS(X) alignas(X) 
 49 #define XGBOOST_ALIGNAS(X) 
 53 #define XGBOOST_EXPECT(cond, ret) __builtin_expect((cond), (ret)) 
 55 #define XGBOOST_EXPECT(cond, ret) (cond) 
 61 #if defined (__CUDA__) || defined(__NVCC__) 
 62 #define XGBOOST_DEVICE __host__ __device__ 
 64 #define XGBOOST_DEVICE 
 67 #if defined(__CUDA__) || defined(__CUDACC__) 
 68 #define XGBOOST_HOST_DEV_INLINE XGBOOST_DEVICE __forceinline__ 
 69 #define XGBOOST_DEV_INLINE __device__ __forceinline__ 
 71 #define XGBOOST_HOST_DEV_INLINE 
 72 #define XGBOOST_DEV_INLINE 
 78 #define XGBOOST_RESTRICT __restrict 
 80 #define XGBOOST_RESTRICT __restrict__ 
 84 #if !defined(XGBOOST_MM_PREFETCH_PRESENT) && !defined(XGBOOST_BUILTIN_PREFETCH_PRESENT) 
 86 #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64))) || defined(__INTEL_COMPILER) 
 88  #define XGBOOST_MM_PREFETCH_PRESENT 
 89  #define XGBOOST_BUILTIN_PREFETCH_PRESENT 
 90 #elif defined(__GNUC__) 
 92 #define XGBOOST_BUILTIN_PREFETCH_PRESENT 
 145 template <
typename T>
 
 182  template <
typename T2>
 
 201  g.grad_ = grad_ + rhs.grad_;
 
 202  g.hess_ = hess_ + rhs.hess_;
 
 216  g.grad_ = grad_ - rhs.grad_;
 
 217  g.hess_ = hess_ - rhs.hess_;
 
 229  g.grad_ = grad_ * multiplier;
 
 230  g.hess_ = hess_ * multiplier;
 
 242  g.grad_ = grad_ / divisor;
 
 243  g.hess_ = hess_ / divisor;
 
 248  return grad_ == rhs.grad_ && hess_ == rhs.hess_;
 
 253  static_cast<float>(value));
 
 297  g.grad_ = grad_ + rhs.grad_;
 
 298  g.hess_ = hess_ + rhs.hess_;
 
 310  g.grad_ = grad_ - rhs.grad_;
 
 311  g.hess_ = hess_ - rhs.hess_;
 
 316  return grad_ == rhs.grad_ && hess_ == rhs.hess_;
 
 324 using Args = std::vector<std::pair<std::string, std::string> >;
 
#define XGBOOST_DEVICE
Tag function as usable by device.
Definition: base.h:64
用于高精度梯度对的定点表示。具有不同的接口,因此我们不会...
定义: base.h:271
XGBOOST_DEVICE GradientPairInt64 operator+(const GradientPairInt64 &rhs) const
定义: base.h:295
XGBOOST_DEVICE bool operator==(const GradientPairInt64 &rhs) const
定义: base.h:315
GradientPairInt64()=default
XGBOOST_DEVICE T GetQuantisedHess() const
定义: base.h:287
GradientPairInt64(GradientPairInt64 const &g)=default
GradientPairInt64 & operator=(GradientPairInt64 const &g)=default
XGBOOST_DEVICE GradientPairInt64 & operator-=(const GradientPairInt64 &rhs)
定义: base.h:302
friend std::ostream & operator<<(std::ostream &os, const GradientPairInt64 &g)
定义: base.h:318
XGBOOST_DEVICE GradientPairInt64 & operator+=(const GradientPairInt64 &rhs)
定义: base.h:289
XGBOOST_DEVICE T GetQuantisedGrad() const
定义: base.h:286
XGBOOST_DEVICE GradientPairInt64(T grad, T hess)
定义: base.h:279
XGBOOST_DEVICE GradientPairInt64 operator-(const GradientPairInt64 &rhs) const
定义: base.h:308
梯度统计对的实现。模板特化可用于重载不同的...
定义: base.h:146
GradientPairInternal(GradientPairInternal &&g)=default
XGBOOST_DEVICE GradientPairInternal< T > operator*(float multiplier) const
定义: base.h:227
XGBOOST_DEVICE GradientPairInternal< T > & operator+=(const GradientPairInternal< T > &rhs)
定义: base.h:191
void Add(const ValueT &grad, const ValueT &hess)
定义: base.h:158
friend std::ostream & operator<<(std::ostream &os, const GradientPairInternal< T > &g)
定义: base.h:256
XGBOOST_DEVICE GradientPairInternal(T grad, T hess)
定义: base.h:169
XGBOOST_DEVICE GradientPairInternal< T > & operator*=(float multiplier)
定义: base.h:221
XGBOOST_DEVICE GradientPairInternal(int value)
定义: base.h:251
XGBOOST_DEVICE GradientPairInternal< T > operator+(const GradientPairInternal< T > &rhs) const
定义: base.h:198
XGBOOST_DEVICE GradientPairInternal< T > & operator/=(float divisor)
定义: base.h:234
XGBOOST_DEVICE GradientPairInternal< T > operator/(float divisor) const
定义: base.h:240
XGBOOST_DEVICE T GetHess() const
定义: base.h:189
XGBOOST_DEVICE GradientPairInternal< T > & operator-=(const GradientPairInternal< T > &rhs)
定义: base.h:206
GradientPairInternal & operator=(GradientPairInternal &&that)=default
XGBOOST_DEVICE GradientPairInternal< T > operator-(const GradientPairInternal< T > &rhs) const
定义: base.h:213
static void Reduce(GradientPairInternal< T > &a, const GradientPairInternal< T > &b)
定义: base.h:163
GradientPairInternal(GradientPairInternal const &g)=default
XGBOOST_DEVICE T GetGrad() const
定义: base.h:188
GradientPairInternal & operator=(GradientPairInternal const &that)=default
XGBOOST_DEVICE GradientPairInternal(const GradientPairInternal< T2 > &g)
定义: base.h:183
GradientPairInternal()=default
XGBOOST_DEVICE bool operator==(const GradientPairInternal< T > &rhs) const
定义: base.h:247
集成目标、gbm和评估的学习器接口。这是用户面临的XGB...
Definition: base.h:97
std::vector< std::pair< std::string, std::string > > Args
定义: base.h:324
std::uint32_t bst_group_t
用于排名组索引的类型。
定义: base.h:123
std::int32_t bst_node_t
树节点索引的类型。
定义: base.h:119
dmlc::omp_ulong omp_ulong
为 OpenMP 循环定义无符号长整型
定义: base.h:330
dmlc::omp_uint bst_omp_uint
为 OpenMP 循环定义无符号整型
定义: base.h:332
std::int32_t bst_bin_t
直方图 bin 索引的类型。我们有时使用 -1 表示无效 bin。
定义: base.h:111
std::int32_t XGBoostVersionT
用于以二进制形式表示版本号的类型。
定义: base.h:334
std::uint64_t bst_idx_t
数据行索引(样本)的类型。
定义: base.h:115
std::int32_t bst_tree_t
用于索引树的类型。
定义: base.h:135
std::uint32_t bst_target_t
用于索引输出目标的类型。
定义: base.h:127
std::int16_t bst_d_ordinal_t
CUDA 设备的序号。
定义: base.h:139
std::uint32_t bst_uint
用于特征索引的无符号整型。
定义: base.h:99
std::int32_t bst_layer_t
用于索引提升层的类型。
定义: base.h:131
std::uint32_t bst_feature_t
数据列(特征)索引的类型。
Definition: base.h:107
std::uint64_t bst_ulong
无符号长整数
定义: base.h:101
float bst_float
浮点类型,用于存储统计信息
Definition: base.h:103
std::int32_t bst_cat_t
类别值类型。
定义: base.h:105
constexpr bst_float kRtEps
最小分割决策的小 epsilon 间隙。
定义: base.h:327