API Docs/Cheet Sheet: Collective, Blocking and Memory Contracts
Created by: ax3l
we are currently sitting in the ADIOS2 tutorial at TU Dresden and as with ADIOS1, the following would be extremely useful:
A cheat sheet (or API documentation) of all public API calls (engine open/close, defines, step begin/end puts) that documents for each of those:
- is it MPI collective or local?
- is it MPI blocking/non-blocking?
- document memory contracts: when is a user allowed or forbidden to modify shared buffers and what will happen if the user does (ignored, overwritten, undefined behavior, etc.)
- does any of the above change with choice of engine?
I personally like a lot about ADIOS1, that most calls on variables are local, non-blocking and not even collective in the MPI sense, but just explicitly documenting this will make starting with ADIOS2 for folks that already know MPI (everyone in HPC) so much easier.