Repository navigation
XLRON v1.3.0
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>1covers 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_heuristicvalues other thanksp_ff/ff_kspnow raise a clear error in the RR-bounds script instead of silently falling back toff_ksp.compilation_time_sis 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_blockingterminates on the acted request's outcome rather than comparing against the next request's failure reward.reward_type=mod_formatis 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_indexis the global path row;path_snrreflects 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/infsemantics preserved); benefits RMSA-GN masking, SNR checks, GN observations and stats transitively.find_block_sizes: O(S²) all-pairs matrix → O(S)cummax/cumminrun-length computation on the non-differentiable path (soft path retained for--differentiable). Measured on an A100: 9.1× end-to-end forksp_bfbest-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: serialfori_loop→vmapover 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