Avoid MPI_Init for Serial I/O when built with MPI
Created by: ax3l
Hi,
we discussed this offline before and we are currently at the point where we would need the feature again. When compiling ADIOS2 with MPI features, it would be wonderful if the serial constructors would still be exposed.
This would allow users to use a cluster module with MPI support and build small serial tools against it, e.g. for meta-data reads, without the need to call those with mpirun
(and without MPI_Init
, ideally).
Is it possible to expose the MPI functionality as a true superset of the serial functionality? Also from a package management point of view, this would make a lot of sense for compatibility.
Regarding the current implementation in source/adios2/ADIOSMPI.h
, I am a bit afraid we run into usability issues (also seen in practical examples with ADIOS1: https://github.com/ornladios/ADIOS/issues/183). Instead of mocking the MPI APIs, could we potentially just use those as a wrapper and an internal state (MPI-parallel or serial) to switch the implementation at runtime?