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

Function MakeDataProvider

catboost/libs/data/data_provider.h:224–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

222 */
223 template <class TTObjectsDataProvider>
224 TIntrusivePtr<TDataProviderTemplate<TTObjectsDataProvider>> MakeDataProvider(
225 TMaybe<TObjectsGroupingPtr> objectsGrouping, // if undefined ObjectsGrouping created from data
226 TBuilderData<typename TTObjectsDataProvider::TData>&& builderData,
227 bool skipCheck,
228 bool forceUnitAutoPairWeights,
229 NPar::ILocalExecutor* localExecutor
230 ) {
231 if (!skipCheck) {
232 /* most likely have been already checked, but call it here for consistency with
233 * overall checking logic
234 */
235 builderData.MetaInfo.Validate();
236 }
237
238 TIntrusivePtr<TTObjectsDataProvider> objectsData;
239
240 auto makeObjectsDataProvider = [&] () {
241 objectsData = MakeIntrusive<TTObjectsDataProvider>(
242 objectsGrouping,
243 std::move(builderData.CommonObjectsData),
244 std::move(builderData.ObjectsData),
245 skipCheck,
246 localExecutor
247 );
248 };
249
250 TVector<std::function<void()>> tasks;
251
252 /* if objectsGrouping is defined we can run objectsData and target data creation in parallel
253 * otherwise create grouping in objectsDataProvider first and then pass it to target constructor
254 */
255 if (objectsGrouping) {
256 tasks.emplace_back(makeObjectsDataProvider);
257 } else {
258 makeObjectsDataProvider();
259 objectsGrouping = objectsData->GetObjectsGrouping();
260 }
261
262 // TMaybe - to defer initialization to async task
263 TMaybe<TRawTargetDataProvider> rawTargetData;
264
265 tasks.emplace_back(
266 [&] () {
267 rawTargetData = MakeMaybe<TRawTargetDataProvider>(
268 *objectsGrouping,
269 std::move(builderData.TargetData),
270 skipCheck,
271 forceUnitAutoPairWeights,
272 localExecutor
273 );
274 }
275 );
276
277 ExecuteTasksInParallel(&tasks, localExecutor);
278
279
280 return MakeIntrusive<TDataProviderTemplate<TTObjectsDataProvider>>(
281 std::move(builderData.MetaInfo), // assuming copying it is not very expensive

Callers

nothing calls this directly

Calls 4

moveFunction · 0.50
ValidateMethod · 0.45
emplace_backMethod · 0.45
GetObjectsGroupingMethod · 0.45

Tested by

no test coverage detected