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

Method ProceedDataSet

catboost/cuda/methods/tree_ctrs.cpp:468–515  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

466}
467
468void NCatboostCuda::TTreeCtrDataSetsHelper::ProceedDataSet(ui32 dataSetPermutationKey,
469 NCatboostCuda::TTreeCtrDataSet& dataSet,
470 NCatboostCuda::TTreeCtrDataSetsHelper::TDataSetVisitor& visitor) {
471 const ui32 deviceId = dataSet.GetDeviceId();
472 auto ctrTargets = DeviceView(DataSet.GetCtrTargets(), deviceId);
473
474 if (!dataSet.HasCompressedIndex()) {
475 NCudaLib::GetCudaManager().WaitComplete();
476
477 auto guard = NCudaLib::GetCudaManager().GetProfiler().Profile(
478 TStringBuilder() << "Build #" << dataSet.GetCtrs().size() << " ctrs dataset");
479
480 using TTensorBuilder = TBatchFeatureTensorBuilder;
481 const ui32 tensorBuilderStreams = PackSizeEstimators[deviceId]->GetStreamCountForCtrCalculation();
482
483 TTreeCtrDataSetBuilder builder(DepthPermutations[dataSetPermutationKey].DeviceView(deviceId),
484 dataSet,
485 tensorBuilderStreams > 1,
486 !LevelBasedCompressedIndex);
487
488 NCudaLib::GetCudaManager().WaitComplete();
489
490 TTensorBuilder batchFeatureTensorBuilder(FeaturesManager,
491 DataSet.GetCatFeatures(),
492 tensorBuilderStreams);
493
494 TVector<ui32> catFeatureIds(dataSet.GetCatFeatures().begin(),
495 dataSet.GetCatFeatures().end());
496 TCtrFromTensorCalcer ctrFromTensorCalcer(builder,
497 dataSet.GetCtrConfigs(),
498 ctrTargets);
499
500 TBatchFeatureTensorBuilder::TFeatureTensorVisitor ctrFromTensorCalcerFunc = [&](const TFeatureTensor& tensor, TCtrBinBuilder<NCudaLib::TSingleMapping>& builder) {
501 ctrFromTensorCalcer(tensor, builder);
502 };
503 batchFeatureTensorBuilder.VisitCtrBinBuilders(dataSet.GetBaseTensorIndices(),
504 dataSet.GetBaseTensor(),
505 catFeatureIds,
506 ctrFromTensorCalcerFunc);
507 NCudaLib::GetCudaManager().WaitComplete();
508 }
509
510 visitor(dataSet);
511
512 if (NeedToDropDataSetAfterVisit(deviceId)) {
513 TTreeCtrDataSetBuilder::DropCache(dataSet);
514 }
515}
516
517bool NCatboostCuda::TTreeCtrDataSetsHelper::NeedToDropDataSetAfterVisit(ui32 deviceId) const {
518 if (IsLastLevel()) {

Callers

nothing calls this directly

Calls 13

DeviceViewFunction · 0.85
HasCompressedIndexMethod · 0.80
GetCatFeaturesMethod · 0.80
VisitCtrBinBuildersMethod · 0.80
TStringBuilderClass · 0.50
GetDeviceIdMethod · 0.45
WaitCompleteMethod · 0.45
ProfileMethod · 0.45
sizeMethod · 0.45
DeviceViewMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected