Investigate, implement and benchmark Vamana graph builder batch sizes reordering

Offen
#419 1 Kommentar 0 Reaktionen 2 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 5 Tagen

@razdoburdin arbeitet bereits daran.

Seit 09.10.2026.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

Claude suggested the following to address Dmitry's comment. It also requires <numeric>.

        // Grow batches geometrically so early inserts can see each other in the sparse
        // graph; otherwise a batch collapses onto one hub whose pruning orphans nodes.
        // Holds batch sizes until the prefix sum below turns them into bounds.
        std::vector<size_t> batch_bounds;
        // Bound: ramp-up batches + full-size batches + leading 0.
        batch_bounds.reserve(std::bit_width(batchsize) + num_batches + 1);
        batch_bounds.push_back(0);
        for (size_t size = 1, inserted = 0; inserted < num_nodes;
             size = std::min(2 * size, batchsize)) {
            batch_bounds.push_back(std::min(num_nodes - inserted, size));
            inserted += batch_bounds.back();
        }
        // Only the final remainder batch can be smaller than its predecessor. Moving it
        // into the ramp keeps sizes non-decreasing.
        auto last = std::prev(batch_bounds.end());
        std::rotate(
            std::upper_bound(batch_bounds.begin(), last, *last), last, batch_bounds.end()
        );
        std::partial_sum(batch_bounds.begin(), batch_bounds.end(), batch_bounds.begin());

Originally posted by @mihaic in https://github.com/intel/ScalableVectorSearch/pull/405#discussion_r4189842666

Vorherrschende Sprache
C++
Sterne
241
Forks
48
Ø Merge
4 T. 21 Std.
Gemergte PRs (30 T.)
11

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus intel/ScalableVectorSearch

Alle Issues in intel/ScalableVectorSearch

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.