IPPL-framework/ippl
IPPL is a C++ library to develop performance portable code for fully Eulerian, Lagrangian or hybrid Eulerian-Lagrangian methods.
This is the state of IPPL which was used for the paper "A Massively Parallel Performance Portable Free-space Spectral Poisson Solver", Mayani et al., published in ACM TOMS. This was used for the scaling studies on Perlmutter (NERSC), Alps (CSCS), and Lumi (CSC).
**Major changes** 1. Solvers reorganized #230 2. MPI interface changed #225 3. New distribution class for random particles generation #229 4. New PIC Manager and modularization of ALPINE examples #240 5. Improved Vico-Greengard open BC Poisson solver with DCT #231 6. Polynomial preconditioners for CG solver #251 7. Field sum #247 8. Tuple class #250 **Minor changes** 1. Cleanup of unused files from IPPL v 1.0 and some bug fixes #214 2. Updated unit test framework #233 3. MPI tags improved (still not very robust) #268 4. FFT warmups #253 5. Null solver (for OPAL drift) #252 6. Bug in communicator fixed #244
**Major changes** IPPL moved from gitlab to github with this release hence many of the merged MRs point to the read only version of gitlab 1. Mixed execution spaces https://gitlab.psi.ch/OPAL/Libraries/ippl/-/merge_requests/188 2. Mixed precision https://gitlab.psi.ch/OPAL/Libraries/ippl/-/merge_requests/154 3. Extension of unit tests https://gitlab.psi.ch/OPAL/Libraries/ippl/-/merge_requests/201 4. FFT optimizations https://gitlab.psi.ch/OPAL/Libraries/ippl/-/merge_requests/192 5. Removal of ippl class https://gitlab.psi.ch/OPAL/Libraries/ippl/-/merge_requests/181 6. Long range part of P3M solver https://gitlab.psi.ch/OPAL/Libraries/ippl/-/merge_requests/170 7. MPI buffers moved to particle attributes #215 **Minor changes** 1. Use Kokkos for math constants and mathematical functions https://gitlab.psi.ch/OPAL/Libraries/ippl/-/merge_requests/165 2. Various bug fixes
Fixes 1D ALPINE and a bug in the CG solver and adds the ability to create copies of fields without going through expressions (!171). ALPINE now lets the user choose CG or FFT for any dimensionality, where supported. Fixes CPU-build detection and uses C++20 accordingly. Buffer overallocation is now an IPPL-wide command line argument.
📋 Changes
- Adds unit tests for FFTs
- Adds ranged iteration for `ippl::Vector` and `ippl::NDIndex`
- Buffer overallocation factor is now an IPPL-wide command line argument
📋 Changes
- Use Kokkos::complex directly in Heffte (#115)
- Added curl operator (#124)
- Added clang format (!155, !159, !160)
- Removed hard-coded types (#142)
- Added Hessian operator (#135)
- Added Bi-harmonic solver (#137)
- Various bug fixes and minor changes (#117, #120, #130, #132, #140, #141, #143, #144, #145, #147, !125)
This is the version used for the scaling study. It uses Kokkos 3.5.00 and Heffte 2.2.0
📋 Changes
- Removed some left over boost calls and directory inclusions in test programs of IPPL-2.3.0
📋 Changes
- Boost dependency is removed and we use std::chrono for the timers instead of boost timers. Only the wall time
- FFT interface updated to include new options from heffte v 2.2.0. Also, the updated interface can do Sine and Cosine
- Solvers submodule is merged in to the IPPL repo itself. This is for simplicity. Consequently a new cmake flag `ENABLE_SOLVERS` has to be turned on to compile the solvers.
- The plasma physics mini-apps from the ALPINE project has been moved to a separate directory named `alpine`. The idea behind this is test directory is supposed to be a playground for testing things and ALPINE is an application based on IPPL. A new cmake flag `ENABLE_ALPINE` needs to be turned on for compiling these mini-apps which in turn requires `ENABLE_SOLVERS=ON` and `ENABLE_FFT=ON`.
- The cmake flags `ENABLE_IPPLTESTS` and `BUILD_UNIT_TESTS` have been changed to `ENABLE_TESTS` and `ENABLE_UNIT_TESTS` for consistency reasons.
📋 Changes
- Particle load balancing using orthogonal recursive bisection added (semester project of M. Ligotino)
- All periodic BCs for scatter and gather operations implemented
- In the solvers submodule, CG solver (Bachelors' thesis of A. Vinciguerra) and FFT-based free space Poisson
- More mini-apps such as Landau damping and two-stream/bump-on-tail instability added
- BC application for particles made faster by avoiding branching
- Bug in the time integration of Penning trap corrected
- Host/device warnings for GPU compilations fixed
Memory optimizations: Introduce the buffer factory interface, allowing MPI communication buffers to be allocated a single time. Redesign particle deletion to work in-place. Kokkos buffer resizing no longer unnecessarily preserves old data. Reduce host-space allocations for MPI requests. Structural changes: Add the plasma mini-apps and remove or redesign redundant test programs. Introduce the FFT solver.
First IPPL release with Kokkos support.
