| 529 | }; |
| 530 | |
| 531 | struct TExclusiveFeatureBundlesData { |
| 532 | // lookups |
| 533 | TVector<TMaybe<TExclusiveBundleIndex>> FlatFeatureIndexToBundlePart; // [flatFeatureIdx] |
| 534 | |
| 535 | TVector<TExclusiveFeaturesBundle> MetaData; // [bundleIdx] |
| 536 | |
| 537 | /* supported TExclusiveFeatureBundleArrayHolder types are TExclusiveFeatureBundleArrayHolder |
| 538 | * and TExclusiveFeatureBundleSparseArrayHolder |
| 539 | */ |
| 540 | TVector<THolder<IExclusiveFeatureBundleArray>> SrcData; // [bundleIdx] |
| 541 | |
| 542 | public: |
| 543 | TExclusiveFeatureBundlesData() = default; |
| 544 | |
| 545 | // SrcData is not initialized here - create separately |
| 546 | TExclusiveFeatureBundlesData( |
| 547 | const NCB::TFeaturesLayout& featuresLayout, |
| 548 | TVector<TExclusiveFeaturesBundle>&& metaData |
| 549 | ); |
| 550 | |
| 551 | // Execute tasks added to resourceConstrainedExecutor to complete GetSubset operation |
| 552 | void GetSubsetWithScheduling( |
| 553 | const TFeaturesArraySubsetIndexing* subsetIndexing, |
| 554 | |
| 555 | // needed only for sparse features |
| 556 | const TMaybe<TFeaturesArraySubsetInvertedIndexing>& subsetInvertedIndexing, |
| 557 | TResourceConstrainedExecutor* resourceConstrainedExecutor, |
| 558 | TExclusiveFeatureBundlesData* subsetData |
| 559 | ) const; |
| 560 | |
| 561 | void Save(NPar::ILocalExecutor* localExecutor, IBinSaver* binSaver) const; |
| 562 | void Load(const TArraySubsetIndexing<ui32>* subsetIndexing, IBinSaver* binSaver); |
| 563 | }; |
| 564 | |
| 565 | |
| 566 | struct TFeatureGroupsData { |
no outgoing calls