MCPcopy Create free account
hub / github.com/catboost/catboost / SplitRange

Function SplitRange

library/cpp/netliba/v6/ib_collective.cpp:128–144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126 };
127
128 static int SplitRange(THashMap<int, TVector<TSRTransfer>>* res, int iter, int beg, int fin) {
129 int mid = (beg + fin + 1) / 2;
130 if (mid == fin) {
131 return iter;
132 }
133 for (int i = 0; i < fin - mid; ++i) {
134 (*res)[iter].push_back(TSRTransfer(beg + i, mid + i, beg, mid));
135 (*res)[iter].push_back(TSRTransfer(mid + i, beg + i, mid, fin));
136 }
137 if (fin - mid < mid - beg) {
138 // [mid - 1] did not receive [mid;fin)
139 (*res)[iter].push_back(TSRTransfer(mid, mid - 1, mid, fin));
140 }
141 int rv1 = SplitRange(res, iter + 1, beg, mid);
142 int rv2 = SplitRange(res, iter + 1, mid, fin);
143 return Max(rv1, rv2);
144 }
145
146 static void CreatePow2Merge(TMergePlan* plan, int colSize) {
147 // finally everybody has full range [0;ColSize)

Callers 1

CreatePow2MergeFunction · 0.70

Calls 3

TSRTransferClass · 0.70
MaxFunction · 0.50
push_backMethod · 0.45

Tested by

no test coverage detected