Skip to content

v0.3.5 — RWI velocity gradient for AcousticLSRTM

Choose a tag to compare

@GeophyAI GeophyAI released this 05 Oct 08:33
· 86 commits to dev since this release

sweep-solver 0.3.5

AcousticLSRTM / AcousticLSRTM3D with impl='c' now return the velocity gradient, and run under domain decomposition. Upgrade with pip install -U sweep-solver. sweepx stays at 0.3.4: a fresh pip install sweepx resolves to solver 0.3.5, but pip install -U sweepx on an existing install does not upgrade the solver.

Added

  • RWI velocity gradient (#108). vp.grad used to be zero. The full and boundary-saving backwards now compute the tomographic gradient of Wu & Alkhalifah (2015), terms II+III+IV.
    • Paid for only when vp requires grad, decided per call. A classic LSRTM (reflectivity only) keeps 0.3.4's buffers and speed. With the vp gradient, a V100 backward takes 1.5–1.8× the time and 1.4–2.0× the memory.
    • Matches eager to rel 2.4e-4 (2-D) and 6.2e-4 (3-D), with the reflectivity reaching the absorbing band.
    • The checkpointing modes still return vp.grad = 0.
  • Term III on its own. With SWEEP_LSRTM_SPLIT_III=1, vp.grad holds II+IV and sweep.propagator.last_grad_split_iii() returns III, for the paper's (II+IV) + β·III.
  • Domain decomposition for AcousticLSRTM 2-D/3-D (ModelParallel). Record and gradients are bit-identical to one GPU on 4× V100, with and without the vp gradient.

Documentation

  • Notebook 31: frequency-selection FWI on a towed-streamer Marmousi (#107).
  • Notebook 32: where the RWI velocity gradient comes from, in 2-D and 3-D (#108).
  • One citation style for every notebook's references (#109).

The CUDA cores are rebuilt (manylinux_2_28, ABI 2): cu12 0800bee2, cu13 903902ae. BackwardInput gains a field, so a 0.3.4 core and a 0.3.5 package refuse each other.

Full changelog: v0.3.4...v0.3.5