Skip to content

Speedup rollout - #25

Merged
JoKircher merged 6 commits into
mainfrom
speedup-rollout
Aug 11, 2026
Merged

Speedup rollout#25
JoKircher merged 6 commits into
mainfrom
speedup-rollout

Conversation

@JoKircher

@JoKircher JoKircher commented Aug 11, 2026

Copy link
Copy Markdown
Member

Patch release (0.1.2). Non-breaking — additive config + internal perf work;
default behavior is preserved (bit-identical values/gradients).

Changes

  • Graph-construction speedup: build node features with a single vcat over the
    present blocks instead of chained per-block vcats. ~4.8× faster forward, ~1/3 less
    fwd+bwd allocation; values and gradients are bit-identical.
  • Pluggable neighbor search: new Args.neighbor_backend::Symbol (default
    :pointneighbors, unchanged behavior; :octopus opt-in). Octopus.jl added as a
    registered dependency; backend is threaded through build_graph via meta.
  • Eval RHS: drop Zygote tracking on the inference path.
  • Bounded eval: GNS_EVAL_NTRAJ env var caps the number of evaluated
    trajectories (default: all) for tractable A/B timing runs.
  • Housekeeping: relocate import scripts convert_csv/src/import_data/;
    move JuliaFormatter from [deps] to test-only [extras].

Not breaking

No exported symbols changed; neighbor_backend is a defaulted Args field; the
convert_csv/src/import_data/ move is an internal include relocation
(csv_to_hdf5/vtk_to_hdf5 exports unchanged).

JoKircher and others added 6 commits August 5, 2026 14:00
The GraphNetCore 0.4 migration (cfbe629) dropped the neighbor_backend
wiring: Args lost the field and meta["neighbor_backend"] was set nowhere,
so build_graph silently fell back to :pointneighbors and passing
neighbor_backend= to eval_network crashed the Args constructor
(MethodError) — breaking the eval/benchmark path entirely. Restore the
documented design (Args.neighbor_backend -> meta["neighbor_backend"]):
re-add the field (default :pointneighbors) and thread it at all four meta
sites (train x2, eval, extrapolate). :octopus is required for the larger
droplets/Duese (:pointneighbors OOMs on a 24 GB card).

Also drop the Zygote.Buffer/copy from ode_step_eval: rollout solves an
ODEProblem{false} with no sensealg, so this RHS is never differentiated
— the AD bookkeeping was dead weight in a hot loop run ~trajectory_length
times per trajectory. Denormalize the output slices directly; value-
identical to the buffer path (for a single output field it reduces to
inverse_data(o_norm, output) .* val_mask).

Verified on A30: full 39-trajectory D50 Euler eval runs end-to-end with
:octopus, rollout stable, MSE in the baseline range.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@JoKircher
JoKircher merged commit ca3af00 into main Aug 11, 2026
1 of 2 checks passed
@JoKircher
JoKircher deleted the speedup-rollout branch August 11, 2026 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant