Skip to content

Particle Roadmap in AMReX/pyAMReX #460

@ax3l

Description

@ax3l

To make optimal use of pyAMReX, code bindings, performance per se, etc. we are undergoing a general modernization of particle data structures in AMReX.

I encourage all AMReX codes that use particles to follow the modernizations, which will not only provide more performance but also a more seamless Python, AI/ML, adn code coupling experience.

First step - Do Now

  • Transition to PureSoA particles for easier layout, faster performance and potential better SIMD performance.
  • The implementation is now available since 2023 and well-tested in BLAST codes [1], [2], [3].
  • Status: transition now. We will drop support for AoS to focus development in pyAMReX, see Dropping Support for AoS #459

Planned

  • To simplify code-coupling of different AMReX codes and to reduce compile-time, we plan to transition to amrex::PolymorphicArenaAllocator instead of having separate specializations for host/pinned/device containers. This fixes a long-standing design issue in ParticleContainer that was solved better in AMReX MultiFab.
  • Consider transitioning soon, after Specialize a Polymorphic ParticleContainer #428 was implemented.
  • First tests show that this change is indeed performance-neutral, but maintenance-positive.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions