clusterlin: rescale costs (preparation)

This commit is contained in:
Pieter Wuille
2026-02-21 10:27:59 -05:00
committed by Pieter Wuille
parent ecc9a84f85
commit 4eefdfc5b7
4 changed files with 13 additions and 13 deletions

View File

@@ -1043,7 +1043,7 @@ FUZZ_TARGET(clusterlin_linearize)
}
// Invoke Linearize().
max_cost &= 0x7ffff;
max_cost &= 0x3fffff;
auto [linearization, optimal, cost] = Linearize(
/*depgraph=*/depgraph,
/*max_cost=*/max_cost,
@@ -1242,7 +1242,7 @@ FUZZ_TARGET(clusterlin_postlinearize_tree)
// Try to find an even better linearization directly. This must not change the diagram for the
// same reason.
auto [opt_linearization, _optimal, _cost] = Linearize(depgraph_tree, 100000, rng_seed, IndexTxOrder{}, post_linearization);
auto [opt_linearization, _optimal, _cost] = Linearize(depgraph_tree, 1000000, rng_seed, IndexTxOrder{}, post_linearization);
auto opt_chunking = ChunkLinearization(depgraph_tree, opt_linearization);
auto cmp_opt = CompareChunks(opt_chunking, post_chunking);
assert(cmp_opt == 0);

View File

@@ -402,14 +402,14 @@ inline uint64_t MaxOptimalLinearizationCost(DepGraphIndex cluster_count)
// *some* reasonable cost bound, optimal linearizations are always found.
static constexpr uint64_t COSTS[65] = {
0,
0, 4, 10, 34, 76, 156, 229, 380,
441, 517, 678, 933, 1037, 1366, 1464, 1711,
2111, 2542, 3068, 3116, 4029, 3467, 5324, 5402,
6481, 7161, 7441, 8183, 8843, 9353, 11104, 11455,
11791, 12570, 13480, 14259, 14525, 12426, 14477, 20201,
18737, 16581, 23622, 28486, 30652, 33021, 32942, 32745,
34046, 26227, 34662, 38019, 40814, 31113, 41448, 33968,
35024, 59207, 42872, 41277, 42365, 51833, 63410, 67035
0, 176, 440, 1496, 3344, 6864, 10076, 16720,
19404, 22748, 29832, 41052, 45628, 60104, 64416, 75284,
92884, 111848, 134992, 137104, 177276, 152548, 234256, 237688,
285164, 315084, 327404, 360052, 389092, 411532, 488576, 504020,
518804, 553080, 593120, 627396, 639100, 546744, 636988, 888844,
824428, 729564, 1039368, 1253384, 1348688, 1452924, 1449448, 1440780,
1498024, 1153988, 1525128, 1672836, 1795816, 1368972, 1823712, 1494592,
1541056, 2605108, 1886368, 1816188, 1864060, 2280652, 2790040, 2949540
};
assert(cluster_count < std::size(COSTS));
// Multiply the table number by two, to account for the fact that they are not absolutes.