Description
Pull request:
https://github.com/mpi-forum/mpi-standard/pull/27
Problem
Context: MPI_Comm/File/Win_get_info
MPI_COMM_GET_INFO returns a new info object containing the hints of the communicator associated with comm. The current setting of all hints
actually used
by the system related to this communicator is returned in info_used. If no such hints exist, a handle to a newly created info object is returned that contains no key/value pair. The user is responsible for freeing info_used via MPI_INFO_FREE.
What does “actually used” mean?
- Info settings exactly as supplied by the user (e.g. during creation or in set_info)
- Current effective values of info keys (even if different/not supplied by user)
- Implementation defined (this is the most common current interpretation)
Also, when can the value for an info key change?
- Whenever the MPI library feels like it?
- Only in user calls that access/set a particular info key?
Proposal
- MPI maintains an internal INFO state for each Comm/File/Win object.
- Different INFO state for each object.
- The INFO state is created/set/referenced during creation of the Comm/File/Win object.
- The INFO state may be INFO_NULL, if no keys support by MPI.
- The INFO state may be some common default Info object, if no user-supplied key/values.
- MPI_[Comm|File|Win]_get_info returns MPI’s current internal INFO state.
- MPI_[Comm|File|Win]_set_info attempts to modify MPI’s internal INFO state.
- MPI may ignore supplied keys, whether or not that key is current set in the internal state.
- MPI may choose different values for supplied keys, (not user value and not internal value).
- MPI must not change values for keys not supplied by the user in the set function call.
- MPI must not choose more restrictive values for assertion keys.
- MPI may choose any less restrictive (or equally restrictive) value for any info key.
- MPI does not have to store user keys that it does not understand (it is not a cache).
Changes to the Text
TBD: Describe the text changes here.
Impact on Implementations
Almost useless but minimal work implementation: ignore all info keys, i.e. do not even store them. Always return INFO_NULL from all info query functions.
More useful but more work implementation: for each info key that can have some sort of internal effect on the MPI library, store the key as supplied by the user with the most appropriate value, i.e. the value that most closely represents what the MPI library will implement.
Impact on Users
This change addresses the current ambiguity regarding info query functions allowing the user to predict, and rely on, the results.
References
- Dec. 2016 - Plenary discussion: 12-2016 -- Info Query Part II.pdf
Problem specification slides were presented to the Sept 2016 meeting:
https://docs.google.com/presentation/d/10EPCx2LuJ0BWCeUXIG3pXJjqQs1tlnlO-6TJXIC8G8Q/edit?usp=sharing
The final slide was added during the face-to-face meeting to capture the result of discussion.
Insert any internal (other issues) or external (websites, papers, etc.) references here.