|
template<typename Func > |
void | Init (const size_t n_tasks, size_t n_nodes, Func funcNTask) |
|
template<bool default_left, bool any_missing, typename ColumnType , typename Predicate > |
std::pair< size_t, size_t > | PartitionKernel (ColumnType *p_column, common::Span< const size_t > row_indices, common::Span< size_t > left_part, common::Span< size_t > right_part, size_t base_rowid, Predicate &&pred) |
|
template<typename Pred > |
std::pair< size_t, size_t > | PartitionRangeKernel (common::Span< const size_t > ridx, common::Span< size_t > left_part, common::Span< size_t > right_part, Pred pred) |
|
template<typename BinIdxType , bool any_missing, bool any_cat, typename ExpandEntry > |
void | Partition (const size_t node_in_set, std::vector< ExpandEntry > const &nodes, const common::Range1d range, const bst_bin_t split_cond, GHistIndexMatrix const &gmat, const common::ColumnMatrix &column_matrix, const RegTree &tree, const size_t *rid) |
|
template<bool any_missing, typename ColumnType , typename Predicate > |
void | MaskKernel (ColumnType *p_column, common::Span< const size_t > row_indices, size_t base_rowid, BitVector *decision_bits, BitVector *missing_bits, Predicate &&pred) |
|
template<typename BinIdxType , bool any_missing, bool any_cat, typename ExpandEntry > |
void | MaskRows (const size_t node_in_set, std::vector< ExpandEntry > const &nodes, const common::Range1d range, bst_bin_t split_cond, GHistIndexMatrix const &gmat, const common::ColumnMatrix &column_matrix, const RegTree &tree, const size_t *rid, BitVector *decision_bits, BitVector *missing_bits) |
| When data is split by column, we don't have all the features locally on the current worker, so we go through all the rows and mark the bit vectors on whether the decision is made to go right, or if the feature value used for the split is missing.
|
|
template<typename ExpandEntry > |
void | PartitionByMask (const size_t node_in_set, std::vector< ExpandEntry > const &nodes, const common::Range1d range, GHistIndexMatrix const &gmat, const RegTree &tree, const size_t *rid, BitVector const &decision_bits, BitVector const &missing_bits) |
| Once we've aggregated the decision and missing bits from all the workers, we can then use them to partition the rows accordingly.
|
|
void | AllocateForTask (size_t id) |
|
common::Span< size_t > | GetLeftBuffer (int nid, size_t begin, size_t end) |
|
common::Span< size_t > | GetRightBuffer (int nid, size_t begin, size_t end) |
|
void | SetNLeftElems (int nid, size_t begin, size_t n_left) |
|
void | SetNRightElems (int nid, size_t begin, size_t n_right) |
|
std::size_t | GetNLeftElems (int nid) const |
|
std::size_t | GetNRightElems (int nid) const |
|
void | CalculateRowOffsets () |
|
void | MergeToArray (int nid, size_t begin, size_t *rows_indexes) |
|
size_t | GetTaskIdx (int nid, size_t begin) |
|
template<typename Sampledp > |
void | LeafPartition (Context const *ctx, RegTree const &tree, RowSetCollection const &row_set, std::vector< bst_node_t > *p_position, Sampledp sampledp) const |
|