MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / ConstructHistogram

Method ConstructHistogram

src/io/dense_bin.hpp:71–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

69 BinIterator* GetIterator(uint32_t min_bin, uint32_t max_bin, uint32_t default_bin) const override;
70
71 void ConstructHistogram(const data_size_t* data_indices, data_size_t num_data,
72 const score_t* ordered_gradients, const score_t* ordered_hessians,
73 HistogramBinEntry* out) const override {
74 const data_size_t rest = num_data & 0x3;
75 data_size_t i = 0;
76 for (; i < num_data - rest; i += 4) {
77 const VAL_T bin0 = data_[data_indices[i]];
78 const VAL_T bin1 = data_[data_indices[i + 1]];
79 const VAL_T bin2 = data_[data_indices[i + 2]];
80 const VAL_T bin3 = data_[data_indices[i + 3]];
81
82 out[bin0].sum_gradients += ordered_gradients[i];
83 out[bin1].sum_gradients += ordered_gradients[i + 1];
84 out[bin2].sum_gradients += ordered_gradients[i + 2];
85 out[bin3].sum_gradients += ordered_gradients[i + 3];
86
87 out[bin0].sum_hessians += ordered_hessians[i];
88 out[bin1].sum_hessians += ordered_hessians[i + 1];
89 out[bin2].sum_hessians += ordered_hessians[i + 2];
90 out[bin3].sum_hessians += ordered_hessians[i + 3];
91
92 ++out[bin0].cnt;
93 ++out[bin1].cnt;
94 ++out[bin2].cnt;
95 ++out[bin3].cnt;
96 }
97 for (; i < num_data; ++i) {
98 const VAL_T bin = data_[data_indices[i]];
99 out[bin].sum_gradients += ordered_gradients[i];
100 out[bin].sum_hessians += ordered_hessians[i];
101 ++out[bin].cnt;
102 }
103 }
104
105 void ConstructHistogram(data_size_t num_data,
106 const score_t* ordered_gradients, const score_t* ordered_hessians,

Callers 2

ConstructHistogramsMethod · 0.45
ConstructHistogramsMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected