<div dir="ltr">This is the semantic that we have been working with in the info assertions proposal.  But, I do see the ambiguity.<div><br></div><div>Several things have come up that would impact the info assertions proposal:</div><div><br></div><div>1. If comm_get_info + dup_with_info is not equivalent to comm_dup, then we are losing functionality by removing info propagation in dup.  We may need a new get_info routine to support both types of queries.</div><div><br></div><div>2. If comm_get_info does not return values indicating the current configuration/behavior of the MPI library then we may need to adjust the language we added to comm_set_info indicating that users should check whether changes to info key values were accepted by the MPI library.</div><div><br></div><div> ~Jim.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 17, 2016 at 8:50 PM, Thakur, Rajeev <span dir="ltr"><<a href="mailto:thakur@mcs.anl.gov" target="_blank">thakur@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In the I/O chapter, an implementation is allowed to ignore the hints provided by the user. MPI_File_get_info returns the current value of hints actually used in the implementation. So suppose a user passes the info key “striping_unit" with value 10, but the system on which the file is created doesn’t support user control of striping unit, the implementation can ignore the user-provided value and, in MPI_File_get_info, return the default striping unit used for the file (which could be 8, say).<br>
<br>
Rajeev<br>
<div><div class="h5"><br>
<br>
<br>
> On Feb 17, 2016, at 5:57 PM, Schulz Martin <<a href="mailto:schulzm@llnl.gov">schulzm@llnl.gov</a>> wrote:<br>
><br>
>><br>
>>>> See my reply to Jim: if we're supposed to provide the value of *the<br>
>>>> hint*, that to me sounds like the *user's input* (as opposed to what<br>
>>> the<br>
>>>> system chose to do with that hint).<br>
>>><br>
>>> I agree, hints are given by the user to express what an application<br>
>>> does.<br>
>>> Those should never be changed by the MPI library (or no are no longer<br>
>>> (user) hints).<br>
>><br>
>> Even if the MPI implementation should never change the value of these<br>
>> hints, my original question still stands, because MPI_COMM_GET_INFO's use<br>
>> of the phrase "actually used by the system" is still ambiguous (MPI-3.1<br>
>> p250):<br>
>><br>
>> -----<br>
>> // Assume that the MPI implementation understands the "foo" info key<br>
>> hint, but<br>
>> // is unable to apply it after a communicator is created.<br>
>> MPI_Info_set(myinfo, "foo", "yes");<br>
>> MPI_Comm_set_info(comm, myinfo);<br>
>> MPI_Comm_get_info(comm, myinfo_returned);<br>
>> ------<br>
>><br>
>> So I still don't have a definitive answer as to what is in<br>
>> myinfo_returned:<br>
>><br>
>> 1. "foo" = "yes", because that's what the user set, and the MPI<br>
>> implementation understood the "foo" hint key (regardless of what it chose<br>
>> to do with that hint)<br>
>> --> This is what I think should happen<br>
>><br>
>> 2. "foo" = "no", because the MPI implementation wasn't able to use the<br>
>> "foo" hint<br>
>> --> There's at least 2 explicit votes against this behavior (JeffSq,<br>
>> Martin)<br>
>><br>
>> 3. no "foo" key is set, because the MPI implementation wasn't able to use<br>
>> the "foo" hint<br>
>> --> I'm not a big fan of this, because you can't tell the difference<br>
>> between "foo is not understood by the implementation" and "foo is<br>
>> understood by the implementation, but this hint can't be used right now".<br>
><br>
</div></div>> I would say, #3 is correct - the system doesnąt use/apply the hint, I.e.,<br>
> the behavior is the same as if the hint wasnąt supplied. I agree, this is<br>
<span class="">> not ideal since knowing what an implementation supports would be good, but<br>
> the standard never makes that distinction.<br>
><br>
>><br>
>> =========<br>
>><br>
>> Regardless of what is returned by MPI_COMM_GET_INFO, what happens in<br>
>> MPI_COMM_DUP?<br>
>><br>
>> The "actually used by the system" ambiguous phrase only applies to<br>
>> MPI_COMM_GET_INFO.  MPI_COMM_DUP is defined in MPI-3.1 p238:<br>
>><br>
>>  "MPI_COMM_DUP duplicates the existing communicator comm with ... info<br>
>> hints."<br>
>><br>
>> It doesn't have any scoping language about *which* hints are copied -- it<br>
>> pretty much implies that *all* hints are copied.<br>
>><br>
>> As such, I think that "foo"="yes" should be propagated to the new<br>
>> communicator.<br>
><br>
> Yes, I agree - even if the hint is not used and hence not returned by<br>
</span>> MPI_COMM_GET_INFO, itąs still set on the communicator. The user set it and<br>
<span class="">> expects it to be set and so it should be part of the duplication.<br>
><br>
>> Which is another reason that I think that MPI_COMM_GET_INFO should also<br>
>> return "foo"="yes" in myinfo_returned (i.e., so that MPI_COMM_GET_INFO<br>
>> and MPI_COMM_DUP both behave the same way).<br>
><br>
</span>> I agree, thatąs what it should do - GET and SET should be matching, but<br>
> thatąs not how the standard is written (sadly).<br>
<span class="">><br>
> The idea behavior would be three calls, IMHO:<br>
><br>
> MPI_COMM_GET_INFO - return all hints set<br>
> MPI_COMM_GET_INFO_UNDERSTOOD - return all hints that could be used by an<br>
> implementation<br>
</span>> MPI_COMM_GET_INFO_USED - return all hints used (thatąs the current<br>
<div class="HOEnZb"><div class="h5">> behavior of MPI_COMM_GET_INFO)<br>
><br>
> doing this, though, throws into the usual backwards compatibility<br>
> problems, though.<br>
><br>
> Martin<br>
><br>
><br>
><br>
>><br>
>> Thoughts?<br>
>><br>
>> --<br>
>> Jeff Squyres<br>
>> <a href="mailto:jsquyres@cisco.com">jsquyres@cisco.com</a><br>
>> For corporate legal information go to:<br>
>> <a href="http://www.cisco.com/web/about/doing_business/legal/cri/" rel="noreferrer" target="_blank">http://www.cisco.com/web/about/doing_business/legal/cri/</a><br>
><br>
><br>
> _______________________________________________<br>
> mpi-forum mailing list<br>
> <a href="mailto:mpi-forum@lists.mpi-forum.org">mpi-forum@lists.mpi-forum.org</a><br>
> <a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum" rel="noreferrer" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><br>
<br>
_______________________________________________<br>
mpi-forum mailing list<br>
<a href="mailto:mpi-forum@lists.mpi-forum.org">mpi-forum@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum" rel="noreferrer" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a></div></div></blockquote></div><br></div>