| 564 | |
| 565 | |
| 566 | struct TFeatureGroupsData { |
| 567 | TVector<TMaybe<TFeaturesGroupIndex>> FlatFeatureIndexToGroupPart; |
| 568 | TVector<TFeaturesGroup> MetaData; |
| 569 | TVector<THolder<IFeaturesGroupArray>> SrcData; // [groupIdx] |
| 570 | |
| 571 | public: |
| 572 | TFeatureGroupsData() = default; |
| 573 | |
| 574 | // SrcData is not initialized here - create separately |
| 575 | TFeatureGroupsData( |
| 576 | const NCB::TFeaturesLayout& featuresLayout, |
| 577 | TVector<TFeaturesGroup>&& metaData |
| 578 | ); |
| 579 | |
| 580 | // Execute tasks added to resourceConstrainedExecutor to complete GetSubset operation |
| 581 | void GetSubsetWithScheduling( |
| 582 | const TFeaturesArraySubsetIndexing* subsetIndexing, |
| 583 | |
| 584 | // needed only for sparse features |
| 585 | const TMaybe<TFeaturesArraySubsetInvertedIndexing>& subsetInvertedIndexing, |
| 586 | TResourceConstrainedExecutor* resourceConstrainedExecutor, |
| 587 | TFeatureGroupsData* subsetData |
| 588 | ) const; |
| 589 | |
| 590 | void Save(NPar::ILocalExecutor* localExecutor, IBinSaver* binSaver) const; |
| 591 | void Load(const TArraySubsetIndexing<ui32>* subsetIndexing, IBinSaver* binSaver); |
| 592 | }; |
| 593 | |
| 594 | |
| 595 | struct TPackedBinaryFeaturesData { |
no outgoing calls