<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr">OK, I guess MPI standard wants to have this kind of code.<div><br></div>int valuelen;<br>MPI_Info_get_valuelen(..., &valuelen,...);<br>int buflen = valuelen + 1;<br>char* value = (char *)malloc(buflen);<br>MPI_Info_get(..., valuelen, value, ...);<div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Though, from a user's point of view, I fell better if it was </span>MPI_Info_get(..., buflen, value, ...), that is, using buflen to specify the length of buffer I pass to MPI.</div><div><span style="font-size:12.8000001907349px"><br></span></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr">--Junchao Zhang</div></div></div>
<br><div class="gmail_quote">On Tue, Feb 3, 2015 at 4:26 PM, William Gropp <span dir="ltr"><<a href="mailto:wgropp@illinois.edu" target="_blank">wgropp@illinois.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Thanks.  Yes, I believe this is a bug.  The implementation of MPI_Info_get in MPICH passes valuelen to the internal copy routine, yet it is clear that the definition in the standard for MPI_Info_get, it should pass valuelen+1 (it should also check for the error return code from the internal routine and return a value MPI error code if the buffer is too small.<div><br></div><div>Bill</div><div><br><div><div><div class="h5"><div>On Feb 1, 2015, at 12:13 AM, Hajime Fujita <<a href="mailto:hfujita@uchicago.edu" target="_blank">hfujita@uchicago.edu</a>> wrote:</div><br></div></div><blockquote type="cite">



<div><div><div class="h5">
<div><font><span style="font-size:10pt">
<div>Hello,<br>
<br>
I came across some question about a behavior of MPI_Info_get in MPICH.<br>
<br>
If I knew the size of the value, what should I pass to MPI_Info_get as `valuelen`?<br>
Suppose I have 3-byte value in the info object, and I allocate 4-byte buffer including a space for null-termination. Then I think I should specify 3 as valuelen to retrieve the whole value, as the MPI-3 specifications says<br>
"In C, valuelen should be one less than the amount of allocated space to allow for the null terminator.”<br>
<br>
However, when I run the attached program in MPICH 3.1.1, I get:<br>
$ ./test<br>
key found: vaule=va  # The last character ‘l’ is missing<br>
<br>
If I specify `sizeof(buff)` as valuelen, it shows “val” correctly.<br>
<br>
So apparently MPICH thinks valuelen includes null terminator.<br>
Am I missing anything, or any misunderstanding here?<br>
</div>
</span></font></div>
</div></div><div><font><span style="font-size:10pt">
<div><br>
<br><span class="">
Thank you in advance,<br>
Hajime<br>
<br>
--<br>
Hajime Fujita<br>
Postdoctoral Scholar, Large-Scale Systems Group<br>
Department of Computer Science, The University of Chicago<br>
<a href="http://www.cs.uchicago.edu/people/hfujita" target="_blank">http://www.cs.uchicago.edu/people/hfujita</a></span></div>
</span></font></div><span class="">
<div><font><span style="font-size:10pt">
<div>_______________________________________________<br>
discuss mailing list     <a href="mailto:discuss@mpich.org" target="_blank">discuss@mpich.org</a><br>
To manage subscription options or unsubscribe:<br>
<a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a></div>
</span></font></div>
</span></div>

<span><test.c></span></blockquote></div><br></div></div><br>_______________________________________________<br>
discuss mailing list     <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
To manage subscription options or unsubscribe:<br>
<a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br></blockquote></div><br></div>