<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:CMSS12;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:CMR10;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:CMSS10;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:CMTT10;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:289282387;
        mso-list-template-ids:-1739832302;}
@list l1
        {mso-list-id:1492336169;
        mso-list-type:hybrid;
        mso-list-template-ids:2053427510 761426202 336134147 336134149 336134145 336134147 336134149 336134145 336134147 336134149;}
@list l1:level1
        {mso-level-start-at:16;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2
        {mso-list-id:1775251286;
        mso-list-type:hybrid;
        mso-list-template-ids:-1705073102 -1624453016 336134147 336134149 336134145 336134147 336134149 336134145 336134147 336134149;}
@list l2:level1
        {mso-level-start-at:16;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-NZ" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I think rather than explicitly allowing MPI_DATATYPE_NULL, we should clarify that the buffer and datatype parameters are “ignored”
 when count is zero.  Alternatively, we could document them as “significant” only if count is non-zero.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I believe passing MPI_DATATYPE_NULL is standard-compliant in the following scenarios given the current standard text:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l2 level1 lfo3"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">sendtype in MPI_Gather with MPI_IN_PLACE: standard says sendtype is “ignored”<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l2 level1 lfo3"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">recvtype in MPI_Gather on non-root processes: standard says only sendtype (of the datatype parameters) is “significant”<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">We already have precedent for ignoring parameters, and it seems straight forward to extend that to situations where count is zero. 
 That said, if we fix this in the standard, implementations (including tools that masquerade as implementations) that don’t comply will need to change to be compliant.  It does not affect backward compatibility for MPI applications though.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">-Fab<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> mpi-forum [mailto:mpi-forum-bounces@lists.mpi-forum.org]
<b>On Behalf Of </b>Jeff Hammond<br>
<b>Sent:</b> Thursday, 14 January 2016 10:27 a.m.<br>
<b>To:</b> Main MPI Forum mailing list <mpi-forum@lists.mpi-forum.org><br>
<b>Subject:</b> Re: [Mpi-forum] MPI_DATATYPE_NULL when count=0<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">I'm just guessing, but it seems like a trivial change to not stuff nothing into the struct is sufficient:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">#define DT_GENERALALLOC(b,c,dt,pb,var) \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">{ int err,lens[2]; MPI_Aint addr[2]; MPI_Datatype types[2]; \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  types[0]=MPI_CHAR; lens[0]=piggyback_size; err=MPI_Address((void*) pb, &(addr[0])); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black;background:lime">likely_if (c>0) {</span><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  types[1]=dt; lens[1]=c; err=MPI_Address((void*) b, &(addr[1])); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  err=MPI_Type_struct(2,lens,addr,types,&var); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black;background:lime">} else {</span><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black;background:lime">  var = types[0];</span><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black;background:lime">}</span><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  err=MPI_Type_commit(&var); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">}          <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">However, I'm not sure it is prudent to discuss this code in this context, since it is not compliant with MPI 3.0 ;-)           <o:p></o:p></span></p>
</div>
</div>
<p><span style="font-family:"CMSS12",serif">B.2.2 Changes in MPI-3.0 </span><o:p></o:p></p>
<p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"CMR10",serif"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"CMR10",serif">Section
<span style="color:blue">2.6.1 </span>on page <span style="color:blue">17</span>, Section
<span style="color:blue">16.2 </span>on page <span style="color:blue">604 </span>
and all other chapters.<br>
The C++ bindings were removed from the standard. See errata in Section <span style="color:blue">
B.2.1 </span>on page <span style="color:blue">798 </span>for the latest changes to the
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI </span><span style="font-size:11.0pt;font-family:"CMR10",serif">C++ binding defined in
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI-2.2</span><span style="font-size:11.0pt;font-family:"CMR10",serif">.<br>
This change may affect backward compatibility. <o:p></o:p></span></p>
<p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"CMR10",serif"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"CMR10",serif">Section
<span style="color:blue">2.6.1 </span>on page <span style="color:blue">17</span>, Section
<span style="color:blue">15.1 </span>on page <span style="color:blue">599 </span>
and Section <span style="color:blue">16.1 </span>on page <span style="color:blue">
603</span>. <span style="background:yellow">The deprecated functions</span> </span>
<span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">TYPE</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">HVECTOR</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">TYPE</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">HINDEXED</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif;background:yellow">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif;background:yellow">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif;background:yellow">TYPE</span><span style="font-size:11.0pt;font-family:"CMTT10",serif;background:yellow">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif;background:yellow">STRUCT</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif;background:yellow">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif;background:yellow">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif;background:yellow">ADDRESS</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">TYPE</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">EXTENT</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">TYPE</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">LB</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">TYPE</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">UB</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">ERRHANDLER</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">CREATE
</span><span style="font-size:11.0pt;font-family:"CMR10",serif">(and its callback function prototype
</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">Handler</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">function</span><span style="font-size:11.0pt;font-family:"CMR10",serif">),
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">ERRHANDLER</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">SET</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">ERRHANDLER</span><span style="font-size:11.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:11.0pt;font-family:"CMSS10",serif">GET</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
 the deprecated special datatype handles </span><span style="font-size:10.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">LB</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">UB</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
 and the constants </span><span style="font-size:10.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">COMBINER</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">HINDEXED</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">INTEGER</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">COMBINER</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">HVECTOR</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">INTEGER</span><span style="font-size:11.0pt;font-family:"CMR10",serif">,
</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">MPI</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">COMBINER</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">STRUCT</span><span style="font-size:10.0pt;font-family:"CMTT10",serif">_</span><span style="font-size:10.0pt;font-family:"CMSS10",serif">INTEGER
</span><span style="font-size:11.0pt;font-family:"CMR10",serif;background:yellow">were removed from the standard</span><span style="font-size:11.0pt;font-family:"CMR10",serif">.
<o:p></o:p></span></p>
<p style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"CMR10",serif;background:yellow">This change may affect backward compatibility. </span><span style="font-size:11.0pt;font-family:"CMR10",serif"><o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Best,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
Jeff<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Jan 13, 2016 at 12:54 PM, Schulz Martin <<a href="mailto:schulzm@llnl.gov" target="_blank">schulzm@llnl.gov</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Hi Jeff,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Unfortunately, I don’t have the code on a public repo (it is part of our internal PnMPI branch), but the critical macro is below. Nothing too surprising – it basically
 takes the existing datatype and adds one field, creates a new datatype and then commits it. The following communication then uses this datatype together with MPI_BOTTOM.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">I agree, this code could be optimized for such special cases and adding an if statement to check for zero counts is doable. However, my point was that the proposed
 change does change the standard so that existing code breaks. <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Also, it would seem strange that you then could use MPI_TYPE_NULL for some operations with count zero and not for others. For this particular code, if we would
 define what it means to have MPI_TYPE_NULL for MPI_Type_struct with a zero count (it should probably just be ignored, although we would have to think through if there are any consequences for the extent calculations), the code would work just fine. I am not
 sure, if this would cover all cases, though (it might, if we are carefully defining this for all routines that take datatypes as arguments).<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Martin<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">#define DT_GENERALALLOC(b,c,dt,pb,var) \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">{ int err,lens[2]; MPI_Aint addr[2]; MPI_Datatype types[2]; \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  types[0]=MPI_CHAR; lens[0]=piggyback_size; err=MPI_Address((void*) pb, &(addr[0])); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  types[1]=dt; lens[1]=c; err=MPI_Address((void*) b, &(addr[1])); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  err=MPI_Type_struct(2,lens,addr,types,&var); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  err=MPI_Type_commit(&var); \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">  if (err!=MPI_SUCCESS) { return err; } \<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">}                     <o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Consolas;color:black">________________________________________________________________________<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Consolas;color:black">Martin Schulz, <a href="mailto:schulzm@llnl.gov" target="_blank">schulzm@llnl.gov</a>, <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fscalability.llnl.gov%2f&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=wl28kFxV%2fMX4xCFO%2b2BwmdMJBu10Es%2flxcya2SHW%2bgE%3d" target="_blank">http://scalability.llnl.gov/</a><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Consolas;color:black">CASC @ Lawrence Livermore National Laboratory, Livermore, USA<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">From:
</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">mpi-forum <<a href="mailto:mpi-forum-bounces@lists.mpi-forum.org" target="_blank">mpi-forum-bounces@lists.mpi-forum.org</a>> on behalf of Jeff Hammond <<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>><br>
<b>Reply-To: </b>Main mailing list <<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a>><br>
<b>Date: </b>Wednesday, January 13, 2016 at 12:09 PM<o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black"><br>
<b>To: </b>Main mailing list <<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a>><br>
<b>Subject: </b>Re: [Mpi-forum] MPI_DATATYPE_NULL when count=0<o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Can you provide the specifics of a tool that does this today?  I'd like to read the source code to see what changes are actually required.
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">How can you piggyback an MPI collective call by hacking the datatype if count=0?  You already have to check if count=0 and bump it to count=1 if you are going to
 send a piggy for a null transfer, so how hard is it to replace MPI_DATATYPE_NULL with MPI_BYTE?  If you are not sending a piggy for a null transfer, then the issue is moot.
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">If nothing else, the overhead of implementing the trivial branch that solves this issue will be negligible compared to firing up the datatype engine.
<o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Jeff<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">On Wed, Jan 13, 2016 at 11:41 AM, Schulz Martin <<a href="mailto:schulzm@llnl.gov" target="_blank">schulzm@llnl.gov</a>> wrote:<o:p></o:p></span></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">In general, I agree that allowing any argument for datatype if the count is zero makes sense. However, such a change (even if it is just allowing more) can cause
 backwards compatibility problems: e.g., any PMPI tool or other kind of internal wrapper library can currently have the assumption that it is only passed valid datatypes and hence can use the datatype without having to check. We, for example, use this to implement
 piggybacking (by creating a new struct datatype that contains the original one and adds a piggyback field). If we allowed arbitrary datatypes, we would brake such codes, unless we then also allowed it for datatype creation.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">If we wanted to change this, we probably need to be very careful and make sure we are consistent across the standard and touch all routines that take datatype arguments.
 Just adding the exception for P2P, or even for all communication routines, seems insufficient.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Martin<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"> <o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Consolas;color:black">________________________________________________________________________<o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Consolas;color:black">________________________________________________________________________<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Consolas;color:black">Martin Schulz, <a href="mailto:schulzm@llnl.gov" target="_blank">schulzm@llnl.gov</a>, <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fscalability.llnl.gov%2f&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=wl28kFxV%2fMX4xCFO%2b2BwmdMJBu10Es%2flxcya2SHW%2bgE%3d" target="_blank">http://scalability.llnl.gov/</a><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Consolas;color:black">CASC @ Lawrence Livermore National Laboratory, Livermore, USA<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
</div>
</div>
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">From:
</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">mpi-forum <<a href="mailto:mpi-forum-bounces@lists.mpi-forum.org" target="_blank">mpi-forum-bounces@lists.mpi-forum.org</a>> on behalf of Jeff Hammond <<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>><br>
<b>Reply-To: </b>Main mailing list <<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a>><br>
<b>Date: </b>Wednesday, January 13, 2016 at 6:24 AM<br>
<b>To: </b>Main mailing list <<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a>>
<o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black"><br>
<b>Subject: </b>Re: [Mpi-forum] MPI_DATATYPE_NULL when count=0<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">That is precisely what I want: when count=0, the buffer and the datatype arguments are ignored.  There may be a good reason for MPI_DATATYPE_NULL to be invalid
 when it is actually relevant, but when count=0, the datatype argument is not relevant, because there are zero of them.<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">We already state explicitly that arguments are ignored for MPI_IN_PLACE and MPI_NO_OP:<br>
<br>
* The “in place” option for intracommunicators is specified by passing MPI_IN_PLACE as the value of recvbuf at the root. In such a case, recvcount and recvtype are ignored..." <o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">* "When MPI_NO_OP is specified as the operation, the origin_addr, origin_count, and origin_datatype arguments are ignored."<br>
<br>
I see no reason why count=0 is different from these cases.<br>
<br>
Jeff<br>
<br>
On Wed, Jan 13, 2016 at 5:47 AM, William Gropp <<a href="mailto:wgropp@illinois.edu" target="_blank">wgropp@illinois.edu</a>> wrote:<br>
><br>
> True, MPI_BOTTOM need not be null, but it might be, so the standard doesn’t prohibit it.<br>
><br>
> A carefully worded exception to the general rule for NULL handles would be ok.  I would still make it narrow; for example, just for the use of MPI_DATATYPE_NULL in communication operations with a zero count.<br>
><br>
> Bill<br>
><br>
> William Gropp<br>
> Director, Parallel Computing Institute<br>
> Thomas M. Siebel Chair in Computer Science<br>
> Chief Scientist, NCSA<br>
> University of Illinois Urbana-Champaign<br>
><br>
><br>
><br>
><br>
><br>
> On Jan 12, 2016, at 11:22 PM, Fab Tillier <<a href="mailto:ftillier@microsoft.com" target="_blank">ftillier@microsoft.com</a>> wrote:<br>
><br>
> Don’t datatypes with absolute addresses rely on MPI_BOTTOM, and a portable program can’t assume that MPI_BOTTOM == NULL?<br>
>  <br>
> I think from an ease of use perspective, if I have a count of zero, having to pick an arbitrary committed datatype is non-intuitive.  If count is zero, there is no buffer or datatype, and there should be no requirement such non-existent datatype be committed.<br>
>  <br>
> Cheers,<br>
> -Fab<br>
>  <br>
> From: mpi-forum [mailto:<a href="mailto:mpi-forum-bounces@lists.mpi-forum.org" target="_blank">mpi-forum-bounces@lists.mpi-forum.org</a>] On Behalf Of William Gropp<br>
> Sent: Wednesday, 13 January 2016 4:52 p.m.<br>
> To: Main MPI Forum mailing list <<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a>><br>
> Subject: Re: [Mpi-forum] MPI_DATATYPE_NULL when count=0<br>
>  <br>
> Yes, NULL buffers are valid - they aren’t an MPI object.  There is no prohibition about passing them; only if they are used to form an invalid address (note that a datatype with absolute addresses relies on NULL as the buffer address).<br>
>  <br>
> Bill<br>
>  <br>
><br>
> William Gropp<br>
> Director, Parallel Computing Institute<br>
> Thomas M. Siebel Chair in Computer Science<br>
> Chief Scientist, NCSA<br>
> University of Illinois Urbana-Champaign<br>
><br>
><br>
><br>
>  <br>
> On Jan 12, 2016, at 9:49 PM, Jeff Hammond <<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>> wrote:<br>
><br>
><br>
> Who wrote Example 4.23 of MPI 3.1?<br>
>  <br>
> I propose to add the exception rather than delete that example. I do not want to have to use real datatypes when sending nothing.<br>
>  <br>
> Is NULL a valid buffer handle? Can I pass null pointers when count=0?<br>
><br>
>  <br>
> Jeff<br>
><br>
><br>
> On Tuesday, January 12, 2016, William Gropp <<a href="mailto:wgropp@illinois.edu" target="_blank">wgropp@illinois.edu</a>> wrote:<br>
><br>
> The standard says that the null handles are invalid for input unless explicitly permitted.  There’s no exemption for a datatype argument where the associated count is zero.<br>
>  <br>
> Bill<br>
>  <br>
><br>
> William Gropp<br>
> Director, Parallel Computing Institute<br>
> Thomas M. Siebel Chair in Computer Science<br>
> Chief Scientist, NCSA<br>
> University of Illinois Urbana-Champaign<br>
><br>
><br>
><br>
>  <br>
> On Jan 12, 2016, at 9:26 PM, Jeff Hammond <<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>> wrote:<br>
><br>
><br>
> Is it allowed to communicate messages with (buffer=NULL,count=0,type=MPI_DATATYPE_NULL)?<br>
>  <br>
> George thinks MPI_DATATYPE_NULL cannot be used even when count=0, which I think is ridiculous, particularly when one makes the analogy to buffer=NULL.<br>
>  <o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">> See
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fsecure-web.cisco.com%2f1uIwjXiVB0UCnFFG4b2DNhy-WFSpBHoZVan-ksg1oo1XCSjcKasJCWljyye8xZYsJX2A72ZewdK6RzVNcE2jWKnCqVVFTmp9Oprj6gbb1orgQeDMDduaWKuVGKXKbRsPnX2cJZeGodMtDUQx5HPmA46Qmql4kBAvZDR2KnWoFOQKuotirK6FQIazgUFBlC9CPP8fkF0TFKw4OIzxQJ_Tp2Xe-mRb3swzYiungQAHNUVs53lxZSOLwP432qi3ovJ8cFw4G6XCXEkE37Xx2rGYhrsHiZQy03zUFRmYy13QckBzIrtfY1zG5piXPVIOCfIoFfvm4o-tUjgyZSzspCUye23lLO2G1ic7fjL5OsxTrokI%2fhttp%253A%252F%252Fwww.open-mpi.org%252Fcommunity%252Flists%252Fusers%252F2016%252F01%252F28255.php&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=aiRiHUX55IXOSyPTecc3lA5djmehzyzzHHhAE2UGkBs%3d" target="_blank">
http://secure-web.cisco.com/1uIwjXiVB0UCnFFG4b2DNhy-WFSpBHoZVan-ksg1oo1XCSjcKasJCWljyye8xZYsJX2A72ZewdK6RzVNcE2jWKnCqVVFTmp9Oprj6gbb1orgQeDMDduaWKuVGKXKbRsPnX2cJZeGodMtDUQx5HPmA46Qmql4kBAvZDR2KnWoFOQKuotirK6FQIazgUFBlC9CPP8fkF0TFKw4OIzxQJ_Tp2Xe-mRb3swzYiungQAHNUVs53lxZSOLwP432qi3ovJ8cFw4G6XCXEkE37Xx2rGYhrsHiZQy03zUFRmYy13QckBzIrtfY1zG5piXPVIOCfIoFfvm4o-tUjgyZSzspCUye23lLO2G1ic7fjL5OsxTrokI/http%3A%2F%2Fwww.open-mpi.org%2Fcommunity%2Flists%2Fusers%2F2016%2F01%2F28255.php</a>
 for the thread in question.<o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><br>
>  <br>
> There is example code in MPI that uses this behavior.  George and I agree that example text is non-normative, but I cannot imagine how this example came to exist without the Forum believing it to be valid.<br>
><br>
> Jeff<br>
>  <br>
> --<br>
> Jeff Hammond<br>
> <a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fjeffhammond.github.io%2f&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=mwfNOPy5EsmsDplpdn3JWHTTpx8GlTdAQXGT0DoW%2baA%3d" target="_blank">
http://jeffhammond.github.io/</a><br>
> _______________________________________________<br>
> mpi-forum mailing list<br>
> <a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a><br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.mpi-forum.org%2fmailman%2flistinfo.cgi%2fmpi-forum&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Mz5E%2bUng1%2bLbC3zqQWU7bC%2bINfxuw5Pxh1h%2bvcvRY3o%3d" target="_blank">
http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><br>
><br>
>  <br>
><br>
><br>
><br>
> --<br>
> Jeff Hammond<br>
> <a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fjeffhammond.github.io%2f&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=mwfNOPy5EsmsDplpdn3JWHTTpx8GlTdAQXGT0DoW%2baA%3d" target="_blank">
http://jeffhammond.github.io/</a><br>
> _______________________________________________<br>
> mpi-forum mailing list<br>
> <a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a><br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.mpi-forum.org%2fmailman%2flistinfo.cgi%2fmpi-forum&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Mz5E%2bUng1%2bLbC3zqQWU7bC%2bINfxuw5Pxh1h%2bvcvRY3o%3d" target="_blank">
http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><br>
><br>
>  <br>
> _______________________________________________<br>
> mpi-forum mailing list<br>
> <a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a><br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.mpi-forum.org%2fmailman%2flistinfo.cgi%2fmpi-forum&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Mz5E%2bUng1%2bLbC3zqQWU7bC%2bINfxuw5Pxh1h%2bvcvRY3o%3d" target="_blank">
http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> mpi-forum mailing list<br>
> <a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a><br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.mpi-forum.org%2fmailman%2flistinfo.cgi%2fmpi-forum&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Mz5E%2bUng1%2bLbC3zqQWU7bC%2bINfxuw5Pxh1h%2bvcvRY3o%3d" target="_blank">
http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><br>
<br>
<br>
<br>
<br>
--<br>
Jeff Hammond<br>
<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fjeffhammond.github.io%2f&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=mwfNOPy5EsmsDplpdn3JWHTTpx8GlTdAQXGT0DoW%2baA%3d" target="_blank">http://jeffhammond.github.io/</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><br>
_______________________________________________<br>
mpi-forum mailing list<br>
<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.mpi-forum.org%2fmailman%2flistinfo.cgi%2fmpi-forum&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Mz5E%2bUng1%2bLbC3zqQWU7bC%2bINfxuw5Pxh1h%2bvcvRY3o%3d" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><o:p></o:p></span></p>
</div>
</div>
</blockquote>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><br>
<br clear="all">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">--
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">Jeff Hammond<br>
<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fjeffhammond.github.io%2f&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=mwfNOPy5EsmsDplpdn3JWHTTpx8GlTdAQXGT0DoW%2baA%3d" target="_blank">http://jeffhammond.github.io/</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><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="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.mpi-forum.org%2fmailman%2flistinfo.cgi%2fmpi-forum&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Mz5E%2bUng1%2bLbC3zqQWU7bC%2bINfxuw5Pxh1h%2bvcvRY3o%3d" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<p class="MsoNormal">Jeff Hammond<br>
<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fjeffhammond.github.io%2f&data=01%7c01%7cFTILLIER%40exchange.microsoft.com%7c59b6c2d628414055ceb108d31c605eac%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=mwfNOPy5EsmsDplpdn3JWHTTpx8GlTdAQXGT0DoW%2baA%3d" target="_blank">http://jeffhammond.github.io/</a><o:p></o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>