Use custom coalescing heuristic and introduce a number of new configuration options for memory pools
This is intended to replace https://github.com/eth-cscs/DLA-Future/pull/1143 as a more permanent solution.
This introduces:
- configuration options for controlling the "next" allocation size (i.e. all blocks after the first one) and alignment size of pools
- a custom coalescing heuristic that works around https://github.com/LLNL/Umpire/issues/906
- configuration options that go along with the custom heuristic
I'm 100% sure I haven't chosen the best names for the new options, but I'd like to discuss them with you first before making any further changes. Additionally, I'm 100% aware that the coalescing options add complexity. My intention with them is primarily to have as debugging options, not necessarily something most users would change. The default behaviour is very "vanilla", but in case we see situations where too much memory is used or similar we can use these options to try to tune how umpire frees/coalesces blocks in the pool.
As a semi-related change I've also namespaced the Umpire pools with a DLAF_ prefix since we used quite generic names. I suppose we'd notice if the names clash, but I'd rather be on the safe side and avoid clashes (e.g. if the non-thread safe pool is accessed without synchronization I expect bad things to happen).
To do:
- [ ] formatting
- [ ] naming
- [ ] more/better documentation of options
cscs-ci run
cscs-ci run
Context for current names: https://github.com/LLNL/Umpire/blob/bf2df8d46f6e8918b7402a45b0f95127c3121478/src/umpire/strategy/QuickPool.hpp#L46-L62.
cscs-ci run
cscs-ci run
cscs-ci run