Skip to content

XLRON v1.3.0

Choose a tag to compare

@micdoh micdoh released this 11 Jul 15:33

Correctness fixes for the capacity-bounds scripts, environment rewards/metrics, and trajectory logging, plus weighted traffic sampling and hot-path performance rewrites.

Capacity bounds (#38)

  • Defragmentation episodes replay from index 0, so the largest active service is placed (previously the reconfigurable-routing bound was silently optimistic).
  • Exhaustive cut-set search with CUTSET_PARALLEL_PROCESSES>1 covers the full search space (workers previously skipped most of it).
  • The cut-set simulation's service table no longer silently overwrites active services when full (was permanently leaking capacity).
  • --path_heuristic values other than ksp_ff/ff_ksp now raise a clear error in the RR-bounds script instead of silently falling back to ff_ksp.
  • compilation_time_s is written to cut-set run summaries (profiler key mismatch).

Environment rewards & metrics (#39)

  • Non-service success rewards are no longer zeroed by multiplication with the zero-initialised reward field.
  • --end_first_blocking terminates on the acted request's outcome rather than comparing against the next request's failure reward.
  • reward_type=mod_format is usable (assert/field mismatch fixed).
  • Continuous-operation blocking-probability metrics reset their cumulative counters after ENV_WARMUP_STEPS, so steady-state numbers no longer include the near-zero-blocking network-fill transient. Reported blocking probabilities in warmup-heavy runs will read higher (correctly) than before.
  • prioritization/* loss metrics are registered and logged to wandb.

Trajectory logging (#43)

  • Every per-step logged field (source, dest, data_rate, path_index, slot_index, arrival_time, departure_time) now describes the request the action was taken for; previously they described the next request (off-by-one whenever consecutive requests differed). path_index is the global path row; path_snr reflects the post-placement network state for the acted request's path and includes ROADM ASE, matching the acceptance checks. Trajectory-CSV analyses that compensated for the one-step misalignment must stop doing so.

Features (#40)

  • --values_bw_probs: weighted bandwidth-request sampling (comma-separated weights matching --values_bw; relative weights are normalised). Documented, GUI-exposed, and validated at env creation.

Performance (#45)

Four numerically-equivalent hot-path rewrites, each pinned to a brute-force reference by randomised equivalence tests:

  • get_lightpath_snr: (paths, links, slots) broadcast → a single (P,L)@(L,S) NSR matmul (with exact zero-SNR/inf semantics preserved); benefits RMSA-GN masking, SNR checks, GN observations and stats transitively.
  • find_block_sizes: O(S²) all-pairs matrix → O(S) cummax/cummin run-length computation on the non-differentiable path (soft path retained for --differentiable). Measured on an A100: 9.1× end-to-end for ksp_bf best-fit evaluation at 320 slots (52k → 479k fps) with bit-identical blocking statistics, and 4× faster compile.
  • mask_slots: per-path required-slots computation instead of sweeping all unique SE values and discarding all but one row per path; masks are bit-identical.
  • get_paths_obs_gn_model: serial fori_loop → vmap over the k independent per-path stat computations.
    ksp_ff-style workloads that don't route through these kernels measure at exact parity (no regression).

Full changelog: v1.2.0...v1.3.0