First version of an abstract reduce function
This MR introduces an abstract reduce function which could replace e.g. the getMaxValue function.
The std::function might reduce the runtime of the function.
I made some benchmarks with the allGather version of this.
Here is the average runtime in seconds per process for a very simple benchmark which performs the getMaxValue 1000 times with 4608 processes (64 nodes * 72 cores). Note: l
| getMaxValue | w.o. MPI | abstract getMaxValue | w.o. MPI | ||
|---|---|---|---|---|---|
| first run | 0.20 s | 0.12 s | 0.63 s | 0.17 s | |
| second run | 0.17 s | 0.12 s | 0.61 s | 0.17 s |
When using allReduce instead of allGather these are numbers for commit 6e12c653. again 1000 times with 4608 processes (64 nodes * 72 cores)
| getMaxValue | w.o. MPI | abstract getMaxValue | w.o. MPI | ||
|---|---|---|---|---|---|
| first run | 0.18 s | 0.11 s | 0.22 s | 0.14 s | |
| second run | 0.20 s | 0.11 s | 0.21 s | 0.14 s |
Edited by Dominik Thoennes