Skip to content

GKX 2.4.0

Choose a tag to compare

@rogeriojorge rogeriojorge released this 24 Sep 14:38
· 758 commits to main since this release
cf1d408

GKX 2.4.0

Requires solvax>=0.26.0. Nothing a documented workflow uses is removed.
Undocumented lazy gkx.<name> compatibility aliases were removed with their
modules.

Correctness

  • One resolution default everywhere. gkx run, gkx scan and gkx.run_linear_case now use the same (Nl, Nm) fallback as the Python API: (12, 24) linear, (4, 8) nonlinear. Previously they kept the pre-2.2.0 (24, 12), which is Hermite-starved: Cyclone γ −4.4% from the golden instead of +0.4% (#286).
  • Collision tables check their basis. A tabulated collision operator must run on its exact (Nl, Nm), for example (2, 4), not just the same Nl*Nm; the transposed (4, 2) had put γ 45% low. The Krylov-eigen and CFL-controlled paths now refuse a non-default operator instead of silently using the diagonal term (#290).
  • Stale off-stride rows in nonlinear streamed diagnostics are fixed (#291). The Cyclone absorber-rate reference is migrated (#272).

Performance and derivatives

  • Opt-in [grid] ky_layout = "half". It stores only ky ≥ 0: an RK3 step takes 0.54–0.60× the full layout's time, and the nonlinear RHS 0.49–0.63×. The default stays "full", and 8 of 8 identity checks against 2.3.0 are bitwise (#282).
  • Faster window gradients. The adjoint heat-flux window gradient is 1.27–1.47× faster on an RTX A4000 at unchanged values. The inner per-step recompute is dropped under a 4 GiB memory budget (#279, #297).
  • Sparse-direct growth rate. eigensolver="sparse-direct" uses SOLVAX 0.26's traced sparse factorization. At 3,072 unknowns its gradient matches a dense eigensolve to 3e-13, and the compiled SOLVAX route takes 4–5.5 s, against 117–193 s for the dense and matrix-free routes (#295, SOLVAX #121).
  • Sharding. Sharded runs accept ky extents the device count does not divide (#287), and state_sharding runs on XLA:CPU and GPU (#292).

Leaner package

2.3.0 2.4.0
Source 187 files, 93,344 lines 160 files, 79,446 lines
Tests 81 files, 94,057 lines 74 files, 84,139 lines
tools/ Python 96 files 0 (developer commands under scripts/: 57 files, 42,502 lines)
  • 27 source modules that no user path reached were removed, with bitwise-identical CPU results (#296).
  • Examples are reorganized into a numbered gallery with one smoke test (#281).
  • The docs are current, and the verification matrix is generated from the evidence ledger (#283). The README is rewritten (#285).

Research records

The GKX performance profile and literature surveys (#284) and the sparse-direct benchmark report (#280) are recorded in plan/research/.