Medial Code Documentation
Loading...
Searching...
No Matches
Data Structures | Public Member Functions | Protected Attributes
xgboost::common::PartitionBuilder< BlockSize > Class Template Reference

Data Structures

struct  BlockInfo
 

Public Member Functions

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
 

Protected Attributes

std::vector< std::pair< size_t, size_t > > left_right_nodes_sizes_
 
std::vector< size_t > blocks_offsets_
 
std::vector< std::shared_ptr< BlockInfo > > mem_blocks_
 
size_t max_n_tasks_ = 0
 

The documentation for this class was generated from the following file: