@@ -621,18 +621,23 @@ void LoadSamplesToRam(QuerySampleLibrary* qsl,
621621
622622// / \brief Generates random sets of samples in the QSL that we can load into
623623// / RAM at the same time.
624+ // / \param qsl The query sample library.
625+ // / \param settings The test settings.
626+ // / \param total_sample_count The total number of samples to generate indices for.
627+ // / In accuracy mode, this should be accuracy_sample_count.
628+ // / In performance mode, this should be performance_sample_count.
624629std::vector<LoadableSampleSet> GenerateLoadableSets (
625- QuerySampleLibrary* qsl, const TestSettingsInternal& settings) {
630+ QuerySampleLibrary* qsl, const TestSettingsInternal& settings,
631+ size_t total_sample_count) {
626632 auto tracer = MakeScopedTracer (
627633 [](AsyncTrace& trace) { trace (" GenerateLoadableSets" ); });
628634
629635 std::vector<LoadableSampleSet> result;
630636 std::mt19937 qsl_rng (settings.qsl_rng_seed );
631637
632- // Generate indices for all available samples in the QSL.
633- const size_t qsl_total_count = qsl->TotalSampleCount ();
634- std::vector<QuerySampleIndex> samples (qsl_total_count);
635- for (size_t i = 0 ; i < qsl_total_count; i++) {
638+ // Generate indices for the specified sample count.
639+ std::vector<QuerySampleIndex> samples (total_sample_count);
640+ for (size_t i = 0 ; i < total_sample_count; i++) {
636641 samples[i] = static_cast <QuerySampleIndex>(i);
637642 }
638643
@@ -754,7 +759,8 @@ std::pair<PerformanceSummary, PerformanceSummary> FindBoundaries(
754759 });
755760
756761 std::vector<loadgen::LoadableSampleSet> loadable_sets (
757- loadgen::GenerateLoadableSets (qsl, u_settings));
762+ loadgen::GenerateLoadableSets (qsl, u_settings,
763+ u_settings.performance_sample_count ));
758764 const LoadableSampleSet& performance_set = loadable_sets.front ();
759765 LoadSamplesToRam (qsl, performance_set.set );
760766
@@ -841,7 +847,8 @@ void RunPerformanceMode(SystemUnderTest* sut, QuerySampleLibrary* qsl,
841847
842848 // Use first loadable set as the performance set.
843849 std::vector<loadgen::LoadableSampleSet> loadable_sets (
844- loadgen::GenerateLoadableSets (qsl, settings));
850+ loadgen::GenerateLoadableSets (qsl, settings,
851+ settings.performance_sample_count ));
845852 const LoadableSampleSet& performance_set = loadable_sets.front ();
846853 LoadSamplesToRam (qsl, performance_set.set );
847854
@@ -974,7 +981,8 @@ void FindPeakPerformanceMode(SystemUnderTest* sut, QuerySampleLibrary* qsl,
974981 // 1. Check whether the lower bound came from user satisfy performance
975982 // constraints or not.
976983 std::vector<loadgen::LoadableSampleSet> base_loadable_sets (
977- loadgen::GenerateLoadableSets (qsl, base_settings));
984+ loadgen::GenerateLoadableSets (qsl, base_settings,
985+ base_settings.performance_sample_count ));
978986 const LoadableSampleSet& base_performance_set = base_loadable_sets.front ();
979987 LoadSamplesToRam (qsl, base_performance_set.set );
980988
@@ -1044,7 +1052,9 @@ void FindPeakPerformanceMode(SystemUnderTest* sut, QuerySampleLibrary* qsl,
10441052
10451053 // Reuse performance_set, u_perf_summary has the largest 'samples_per_query'.
10461054 std::vector<loadgen::LoadableSampleSet> loadable_sets (
1047- loadgen::GenerateLoadableSets (qsl, u_perf_summary.settings ));
1055+ loadgen::GenerateLoadableSets (
1056+ qsl, u_perf_summary.settings ,
1057+ u_perf_summary.settings .performance_sample_count ));
10481058 const LoadableSampleSet& performance_set = loadable_sets.front ();
10491059 LoadSamplesToRam (qsl, performance_set.set );
10501060
@@ -1089,7 +1099,8 @@ void RunAccuracyMode(SystemUnderTest* sut, QuerySampleLibrary* qsl,
10891099 });
10901100
10911101 std::vector<loadgen::LoadableSampleSet> loadable_sets (
1092- loadgen::GenerateLoadableSets (qsl, settings));
1102+ loadgen::GenerateLoadableSets (qsl, settings,
1103+ settings.accuracy_sample_count ));
10931104
10941105 for (auto & loadable_set : loadable_sets) {
10951106 {
0 commit comments