diff --git a/benchmark.sh b/benchmark.sh index 6049c3ce..0c4a6acb 100755 --- a/benchmark.sh +++ b/benchmark.sh @@ -6,6 +6,7 @@ SCENARIO_LIMIT="" EFFORT="" SAMPLE_TIMEOUT="" INCLUDE_ASSIGNABLE=false +DEFAULT_SOLVER_NAME="AutoroutingPipelineSolver" default_concurrency() { getconf _NPROCESSORS_ONLN 2>/dev/null || nproc 2>/dev/null || echo 4 @@ -51,6 +52,10 @@ Options: --include-assignable Include assignable pipelines (excluded by default) -h, --help Show this help +Defaults: + Running ./benchmark.sh with no parameters benchmarks only AutoroutingPipelineSolver. + Use "all" to benchmark every available solver. + Examples: ./benchmark.sh ./benchmark.sh AutoroutingPipelineSolver @@ -126,6 +131,10 @@ done CMD=(bun "scripts/benchmark/index.ts" "--concurrency" "$CONCURRENCY") +if [ -z "$SOLVER_NAME" ]; then + SOLVER_NAME="$DEFAULT_SOLVER_NAME" +fi + if [ -n "$SOLVER_NAME" ] && [ "$SOLVER_NAME" != "_" ] && [ "$SOLVER_NAME" != "all" ]; then CMD+=("--solver" "$SOLVER_NAME") fi diff --git a/lib/solvers/HyperHighDensitySolver/HyperSingleIntraNodeSolver.ts b/lib/solvers/HyperHighDensitySolver/HyperSingleIntraNodeSolver.ts index 1cfc9bc3..a1b0760e 100644 --- a/lib/solvers/HyperHighDensitySolver/HyperSingleIntraNodeSolver.ts +++ b/lib/solvers/HyperHighDensitySolver/HyperSingleIntraNodeSolver.ts @@ -16,7 +16,7 @@ import { MultiHeadPolyLineIntraNodeSolver2 } from "../HighDensitySolver/MultiHea import { MultiHeadPolyLineIntraNodeSolver3 } from "../HighDensitySolver/MultiHeadPolyLineIntraNodeSolver/MultiHeadPolyLineIntraNodeSolver3_ViaPossibilitiesSolverIntegration" import { HighDensitySolverA01, - HighDensitySolverA02 as HighDensityA02Solver, + HighDensitySolverA03 as HighDensityA03Solver, } from "@tscircuit/high-density-a01" import { FixedTopologyHighDensityIntraNodeSolver } from "../FixedTopologyHighDensityIntraNodeSolver" @@ -26,7 +26,7 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver< | SingleTransitionCrossingRouteSolver | SingleTransitionIntraNodeSolver | FixedTopologyHighDensityIntraNodeSolver - | HighDensityA02Solver + | HighDensityA03Solver > { override getSolverName(): string { return "HyperSingleIntraNodeSolver" @@ -48,7 +48,7 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver< this.connMap = opts.connMap this.constructorParams = opts this.effort = opts.effort ?? 1 - this.MAX_ITERATIONS = 10_000_000 * this.effort + this.MAX_ITERATIONS = 20_000_000 * this.effort this.GREEDY_MULTIPLIER = 5 this.MIN_SUBSTEPS = 100 } @@ -63,7 +63,7 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver< ["closedFormSingleTrace"], // ["closedFormTwoTrace"], ["highDensityA01"], - ["highDensityA02"], + ["highDensityA03"], ["fixedTopologyHighDensityIntraNodeSolver"], ] } @@ -204,10 +204,10 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver< ], }, { - name: "highDensityA02", + name: "highDensityA03", possibleValues: [ { - HIGH_DENSITY_A02: true, + HIGH_DENSITY_A03: true, }, ], }, @@ -217,7 +217,7 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver< computeG(solver: IntraNodeRouteSolver) { if ( (solver as any) instanceof HighDensitySolverA01 || - (solver as any) instanceof HighDensityA02Solver + (solver as any) instanceof HighDensityA03Solver ) { return (solver as any).iterations / 1_000_000 } @@ -254,30 +254,23 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver< solver.MAX_ITERATIONS = 10_000_000 return solver as any } - if (hyperParameters.HIGH_DENSITY_A02) { - const solver = new HighDensityA02Solver({ + if (hyperParameters.HIGH_DENSITY_A03) { + const solver = new HighDensityA03Solver({ nodeWithPortPoints: this.nodeWithPortPoints, - outerGridCellSize: 0.1, - outerGridCellThickness: 2, - innerGridCellSize: 0.4, + highResolutionCellSize: 0.1, + highResolutionCellThickness: 8, + lowResolutionCellSize: 0.4, viaDiameter: this.constructorParams.viaDiameter ?? 0.3, viaMinDistFromBorder: 0.15, traceMargin: 0.15, - enableDeferredConflictRepair: true, - maxDeferredRepairPasses: 48, - edgePenaltyStrength: 0.2, // This likely needs to be corrected to use the actual trace width- // but using anything but 0.1 for traceThickness is causing issues // needs more debugging- repro01 in the high-density-a01 repo // has a good reproduction traceThickness: 0.1, // this.constructorParams.traceWidth ?? 0.15, - hyperParameters: { - greedyMultiplier: 1.2, - shuffleSeed: hyperParameters.SHUFFLE_SEED ?? 0, - ripCost: 1, - }, + hyperParameters, }) - solver.MAX_ITERATIONS = 20_000_000 * this.effort + solver.MAX_ITERATIONS *= this.effort return solver as any } if (hyperParameters.CLOSED_FORM_TWO_TRACE_SAME_LAYER) { @@ -325,7 +318,7 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver< let routes: HighDensityIntraNodeRoute[] if ( (solver.solver as any) instanceof HighDensitySolverA01 || - (solver.solver as any) instanceof HighDensityA02Solver + (solver.solver as any) instanceof HighDensityA03Solver ) { routes = (solver.solver as any).getOutput() } else { diff --git a/package.json b/package.json index 0522f438..655ab5f3 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@types/react-dom": "^19.0.3", "@vercel/node": "^5.1.7", "@vitejs/plugin-react": "^4.3.4", + "bun-match-svg": "^0.0.14", "circuit-json-to-connectivity-map": "^0.0.19", "circuit-to-svg": "^0.0.220", "clsx": "^2.1.1", @@ -62,11 +63,10 @@ "typescript": "^5.9.3", "use-mouse-matrix-transform": "^1.3.0", "vite": "^6.0.11", - "vite-tsconfig-paths": "^5.1.4", - "bun-match-svg": "^0.0.14" + "vite-tsconfig-paths": "^5.1.4" }, "dependencies": { - "@tscircuit/high-density-a01": "^0.0.18", + "@tscircuit/high-density-a01": "^0.0.21", "fast-json-stable-stringify": "^2.1.0", "object-hash": "^3.0.0" } diff --git a/tests/__snapshots__/core2.snap.svg b/tests/__snapshots__/core2.snap.svg index 94cd6527..b40f7b63 100644 --- a/tests/__snapshots__/core2.snap.svg +++ b/tests/__snapshots__/core2.snap.svg @@ -1 +1 @@ -R1R2C1 \ No newline at end of file +R1R2C1 \ No newline at end of file diff --git a/tests/bugs/__snapshots__/bugreport05-f03221.snap.svg b/tests/bugs/__snapshots__/bugreport05-f03221.snap.svg index 42c81bf7..c72782ef 100644 --- a/tests/bugs/__snapshots__/bugreport05-f03221.snap.svg +++ b/tests/bugs/__snapshots__/bugreport05-f03221.snap.svg @@ -1,4 +1,4 @@ -