Hi Howard,
Thanks - that looks like a manageably short list. Here’s my initial thoughts.
1) terminology: I’m torn on this - it wouldn’t be the first naming clash in MPI (e.g. MPI_WAIT vs MPI_WIN_WAIT) but that’s no excuse to add another. The name MPI Sessions has achieved some useful brand awareness, which we shouldn’t give up lightly.
2a) For MPI_T_CVAR_GET_INFO, I’m not seeing the conflict. The parameters are {int,string,int,int,MPI_Datatype,} so there is nowhere to pass MPI_COMM_WORLD *as a communicator, i.e. MPI_COMM*. Of course, MCW is a link-time constant handle, so its value can be used pretty much anywhere with suitable casting. I would not expect int george = (int)MPI_COMM_WORLD; to need the communicator represented by the symbol to exist.
2b) For MPI_T_CVAR_HANDLE_ALLOC, I like your option of a “not now” error. Alternatively, see (3b) below.
3a) For MPI_T_PVAR_GET_INFO, I’m not seeing the conflict (as for CVAR in (2a) above).
3b) For MPI_T_PVAR_HANDLE_ALLOC, would it be possible to attach the pvar to a skeleton mcw and always return dummy/default values (e.g. all counters would stick at zero) when queried? How much of mcw would need to exist (my assumption - none of it)? If some future action causes MCW to be created properly, i.e. MPI_INIT is called, then the pvar would be attached to it during that creation and start giving non-dummy/default answers. This change could be made irrespective of MPI Sessions.MPI_T_INIT();MPI_T_PVAR_HANDLE_ALLOC(…MCW…);MPI_INIT();// MCW already has PVAR attached
4) We should allow the session handle to be passed as the obj_handle so that CVARs and PVARs can be attached to MPI Sessions.
Cheers,Dan.
On 27 Jan 2017, at 00:17, Pritchard Jr., Howard <howardp@lanl.gov> wrote:
_______________________________________________Hi Folks,
I finally got around to a to-do item for the MPI sessions WG. I’d saidI’d look through the MPI_T portion of the tools chapter of the standardand see what consequences the MPI Sessions concept would have on thatsection.
I came up with the following short list:
- terminology collision. For performance variables, there is an MPI_T_pvar_session construct. However, it seems to me this is sufficiently distinct from what we’re proposing for sessions that there should not be an issue.
- MPI_T_CVAR_GET_INFO and MPI_T_CVAR_HANDLE_ALLOC. These have a handle to a MPI object argument. It is legal to pass MPI COMM WORLD/COMM SELF in as the argument. So we’d need to figure out how to handle these cases in the context of an application that doesn’t explicitly call MPI_INIT or one of the other MPI functions that, according to our proposal, has the side effect of creating MPI_COMM_WORLD/SELF. One option might be to return MPI_ T_ ERR_ CVAR_ SET_ NOT_ NOW error code.
- A similar problem exists for MPI_T_PVAR_GET_INFO and MPI_T_PVAR_HANDLE_ALLOC. Curiously, there is no analogous MPI_T_ERR_PVAR_SET_NOT_NOW error code.
That’s what I came up with for first order items that would be impacted by Sessions, beyond minor languages changes in the text to indicate, for instance, that a Session handle could be passed to MPI_T_CVAR_HANDLE_ALLOC, etc.
Howard
--Howard PritchardHPC-DESLos Alamos National Laboratory
mpiwg-sessions mailing list
mpiwg-sessions@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpiwg-sessions