-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Labels
Description
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 AMReXMultiFab
. - Consider transitioning soon, after Specialize a Polymorphic ParticleContainer #428 was implemented.
- First tests show that this change is indeed performance-neutral, but maintenance-positive.
BenWibking