HaloArrays.jl automates the tedious, error-prone parts of stencil, finite-volume, and lattice codes: ghost-cell (halo) exchange and boundary handling. Write your kernel once and run it serial, multithreaded, or distributed with MPI — same API, just swap the backend.
- Halo exchange handled for you — non-blocking, with comm–compute overlap
- Boundary conditions built in: periodic, reflecting, anti-reflecting, repeating, custom, coupled
- Global reductions + gather + HDF5; GPU-ready via KernelAbstractions
- Composes as an OrdinaryDiffEq state and a Krylov vector (SciML)
Repo: GitHub - fafafrens/HaloArrays.jl · GitHub — feedback welcome!