Skip to content

Use serial I/O instead of MPI-IO for certain versions of OpenMPI

Christoph Schwarzmeier requested to merge serialize_mpiio_cart_comm_openmpi into master

A bug in certain versions of OpenMPI (see #73 (closed)) produces segmentation faults with MPI-IO when using a 3D Cartesian MPI communicator. In !148 (merged), a mechanism was introduced to detect these versions of OpenMPI and use MPI_COMM_WORLD instead of creating a Cartesian MPI communicator. This allowed affected users to use MPI-IO regardless of the issue in OpenMPI. However, as pointed out in #117 (closed), changing the MPI communicator in dependence of the version of an external library might decrease reproducibility.

This merge request partially reverts !148 (merged) and internally uses serial I/O instead of MPI-IO when detecting an affected OpenMPI version. An appropriate warning is written to the output whenever serial I/O is used to circumvent the problem.

Additionally, a warning for corrupt VTK output with OpenMPI 4.0.0 is introduced. As noticed by @rettinger, @yw25ynew and @schwarzmeier, OpenMPI 4.0.0 sporadically (not immediately) starts to produce corrupt VTK output files for large simulations with more than about hundred processes. It is currently unclear, whether this is an issue of the specific machine that was used by these users or a general issue of OpenMPI 4.0.0.

Edited by Christoph Schwarzmeier

Merge request reports