Feedback wanted: GPU-accelerated 2D elastic wave simulation (staggered-grid FD) in Julia

Hi everyone,

I’m currently working on a GPU-accelerated 2D elastic wave simulation code in Julia,
based on staggered-grid finite-difference discretization.
The original motivation is seismic forward modeling, but I’m also interested in
making the implementation reasonably idiomatic and reusable in the Julia ecosystem.

At the moment, the project supports:

  • 2D elastic wave equation on a staggered grid
  • Hybrid absorbing boundary conditions for elastic waves
  • Explicit time stepping
  • Explicit CUDA.jl-based GPU kernels for field updates
  • Config-driven simulation setup (sources, receivers, model, boundaries)

The code is currently research-oriented:
it runs end-to-end on the GPU and produces reasonable results,
but the public API and package structure are still evolving.

The repository is here:

This is very much a work in progress.


Possible future directions

Some possible future directions I’m considering (in no particular commitment order):

  • Support for more general free-surface geometries
    (e.g. irregular topography beyond simple flat boundaries)

  • Extension from 2D to 3D elastic wave modeling,
    once the core abstractions are stable enough

  • Multi-GPU execution via domain decomposition,
    potentially using MPI and CUDA-aware communication


I’d really appreciate feedback on a few specific points:

  1. API design
    Does the current separation between configuration structs and simulation routines
    look idiomatic from a Julia perspective?

  2. GPU kernel organization
    Is it reasonable to keep explicit CUDA kernels for the core updates,
    or would you recommend a higher-level abstraction (e.g. KernelAbstractions.jl)
    at this stage?

  3. Project scope
    From a community perspective, does this look more like:

    • a reusable library, or
    • an application / research code that should stay more opinionated?
  4. Related work
    Are there existing Julia packages or projects I should study or align with?

Thanks for your time, and any suggestions are very welcome.

1 Like

You may have a look at

Thanks for pointing this out — I wasn’t aware of the GinvLab work before, so this is very helpful.

1 Like