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

Function GetSubsetWithScheduling

catboost/libs/data/objects.cpp:680–738  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

678
679template <class TColumn, class TGetAggregatedColumn>
680static void GetSubsetWithScheduling(
681 TConstArrayRef<THolder<TColumn>> src,
682 const TFeaturesArraySubsetIndexing* subsetIndexing,
683
684 // needed only for sparse features
685 const TMaybe<TFeaturesArraySubsetInvertedIndexing>& subsetInvertedIndexing,
686
687 /* flatFeatureIdx -> THolder<TColumn>
688 * returns packed or bundled or grouped column data, returns nullptr if not packed or bundled or grouped
689 */
690 TGetAggregatedColumn&& getAggregatedData,
691 //std::function<THolder<TColumn>(ui32)> getAggregatedData,
692 TResourceConstrainedExecutor* resourceConstrainedExecutor,
693 TVector<THolder<TColumn>>* dst
694) {
695
696 dst->clear(); // cleanup old data
697 dst->resize(src.size());
698
699 TCloningParams cloningParams;
700 cloningParams.MakeConsecutive = false;
701 cloningParams.SubsetIndexing = subsetIndexing;
702 if (subsetInvertedIndexing.Defined()) {
703 cloningParams.InvertedSubsetIndexing = subsetInvertedIndexing.Get();
704 }
705
706 auto localExecutor = resourceConstrainedExecutor->GetExecutorPtr();
707 for (auto i : xrange(src.size())) {
708 auto* srcDataPtr = src[i].Get();
709 if (!srcDataPtr) {
710 continue;
711 }
712
713 (*dst)[i] = getAggregatedData(srcDataPtr->GetId());
714 if ((*dst)[i]) {
715 continue;
716 }
717 auto dstHolderPtr = &(*dst)[i];
718 // TODO(kirillovs): add shortcut here for zero-cost cloneable columns
719 resourceConstrainedExecutor->Add(
720 {
721 srcDataPtr->EstimateMemoryForCloning(cloningParams),
722 [srcDataPtr, dstHolderPtr, localExecutor, cloningParams] () {
723 auto clonedColumn = srcDataPtr->CloneWithNewSubsetIndexing(
724 cloningParams,
725 localExecutor
726 );
727 *dstHolderPtr = DynamicHolderCast<TColumn>(
728 srcDataPtr->CloneWithNewSubsetIndexing(
729 cloningParams,
730 localExecutor
731 ),
732 "Column type changed after cloning"
733 );
734 }
735 }
736 );
737 }

Callers 2

GetSubsetImplMethod · 0.85

Calls 11

xrangeFunction · 0.85
GetExecutorPtrMethod · 0.80
clearMethod · 0.45
resizeMethod · 0.45
sizeMethod · 0.45
DefinedMethod · 0.45
GetMethod · 0.45
GetIdMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected