40 lines
1.3 KiB
Plaintext
40 lines
1.3 KiB
Plaintext
/*!
|
|
* Copyright 2020 by XGBoost Contributors
|
|
*/
|
|
#ifndef EVALUATE_SPLITS_CUH_
|
|
#define EVALUATE_SPLITS_CUH_
|
|
#include <xgboost/span.h>
|
|
#include "../../data/ellpack_page.cuh"
|
|
#include "../split_evaluator.h"
|
|
#include "../constraints.cuh"
|
|
#include "../updater_gpu_common.cuh"
|
|
|
|
namespace xgboost {
|
|
namespace tree {
|
|
|
|
template <typename GradientSumT>
|
|
struct EvaluateSplitInputs {
|
|
int nidx;
|
|
GradientSumT parent_sum;
|
|
GPUTrainingParam param;
|
|
common::Span<const bst_feature_t> feature_set;
|
|
common::Span<FeatureType const> feature_types;
|
|
common::Span<const uint32_t> feature_segments;
|
|
common::Span<const float> feature_values;
|
|
common::Span<const float> min_fvalue;
|
|
common::Span<const GradientSumT> gradient_histogram;
|
|
};
|
|
template <typename GradientSumT>
|
|
void EvaluateSplits(common::Span<DeviceSplitCandidate> out_splits,
|
|
TreeEvaluator::SplitEvaluator<GPUTrainingParam> evaluator,
|
|
EvaluateSplitInputs<GradientSumT> left,
|
|
EvaluateSplitInputs<GradientSumT> right);
|
|
template <typename GradientSumT>
|
|
void EvaluateSingleSplit(common::Span<DeviceSplitCandidate> out_split,
|
|
TreeEvaluator::SplitEvaluator<GPUTrainingParam> evaluator,
|
|
EvaluateSplitInputs<GradientSumT> input);
|
|
} // namespace tree
|
|
} // namespace xgboost
|
|
|
|
#endif // EVALUATE_SPLITS_CUH_
|