Skip to content

Catalog-wide HypoSVI batch relocation driver (15k+ KMA events) #6

Description

@seismoseo

Goal

A driver to run HypoSVI absolute location over a whole KMA catalog (~15,000 events), not just a per-cluster run. GPU now makes this tractable (#5: ~3.5 s/event → ~15 h for 15k), but PocketQuake's flow is per-cluster, and HypoSVI currently locates one event at a time.

Why the current path isn't enough

  • run_hyposvi (pipeline/core/hyposvi_backend.py) is scoped to a cluster: it gathers events from one waveforms_dir, seeds the SVGD box from a single region_bounds, and writes one .sum.
  • HypoSVI.LocateEvents loops per-event (location.py:191), so the GPU sits mostly idle on a 96 GB card — the per-event ~3.5 s is dominated by Python/kernel-launch overhead, not compute. Batching events would cut this substantially.

Design questions to resolve

  1. SVGD init box at catalog scale. The per-cluster fix re-seeds particles to the cluster region; a single all-Korea box (~600×700 km) breaks SVGD convergence (the documented ±20–30 km failure mode). Options: per-event local box from each catalog entry, or spatial sub-binning of the catalog.
  2. Batching. Locate events in batches (vectorized particle clouds) to use the GPU — biggest throughput lever.
  3. Memory/throughput. Profile batch size vs the 96 GB budget; checkpoint/resume for a multi-hour run.
  4. I/O + parallelism. Picks for 15k events (catalog → waveforms → PhaseNet+), output layout, restartability.
  5. Outputs. One catalog-wide .sum (+ optional per-region relocation), bootstrap uncertainties strategy at scale.

Scope

New batch entry point (e.g. pipeline.cli.locate_catalog) reusing hyposvi_backend internals (_events_dict, _resolve_eikonet_paths, _load_eikonet, run_hyposvi's box-seeding). Out of scope: the relative-relocation step (separate concern).

Prereqs: #5 (GPU) — done.

— filed via Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions