Use Mayers' singleton pattern to initialize MPIHelper
Summary
The singleton initialization of MPIHelper is broken (at least in c++23). The solution proposed here is very similar to the old implementation before !952 (merged) and is discussed in !1274 (closed). We use a static variable in the instance(...) method that is returned as singleton object since initialized only once.
The difference to the old implementation is that we allow also to pass zero arguments to the instance() method. Passing no arguments results in passing NULL to MPI_Init. These are vaild arguments to MPI_Init.
The consequence of this MR is as follows:
- Calling
MPI_Helper::instance(argc, argv)with arguments passed tomainresults inMPI_Init(&argc, &argv) - Calling
MPI_Helper::instance()withou arguments, results inMPI_Init(NULL, NULL)
See https://www.mpi-forum.org/docs/mpi-2.0/mpi-20-html/node43.htm for the rational why passing NULL is fine.
Superseeds !1274 (closed)
Edited by Simon Praetorius