Detailed MPI timing and improved communication
Timing routine for MPI
- In Schwimmbad, measure time on workers spent in serial code, MPI recv, MPI send, barriers, and actual compute time
- Print out cumulative wall time at the end
- Enable using --mpi-timing 1
- Output periodic timing snapshots from a single worker (write to .json) using --mpi-timing-interval INTERVAL (for INTERVAL seconds)
- No measured effect on performance when enabled on a 32 core run on OzSTAR skylake nodes
Improved MPI communication
- Create buffer for each worker to use MPI isend, allowing tasks to be sent in parallel
- Enable using --fast-mpi 1
- Provides infrastructure for future improvements to jobs with short sampling times