<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 18, 2016 at 1:31 PM, Jeff Squyres (jsquyres) <span dir="ltr"><<a href="mailto:jsquyres@cisco.com" target="_blank">jsquyres@cisco.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">On Feb 18, 2016, at 3:55 PM, Rolf Rabenseifner <<a href="mailto:rabenseifner@hlrs.de">rabenseifner@hlrs.de</a>> wrote:<br>
><br>
> I would prefer a solution where an application or middlware can check at<br>
> runtime whether the Fortran MPI datatypes exist, i.e., I like mpich's<br>
> solution. It is more simple than all methods that People must check prior<br>
> to compile and must remove or Change parts of there software.<br>
<br>
</span>The reason that JeffH and Jed hate this solution is because it makes it quite difficult for an application to know whether the MPI has Fortran support or not -- they basically have to compile an MPI application *and then run it* to see if the datatypes are actually MPI_DATATYPE_NULL.<br>
<br></blockquote><div><br></div><div>Well, technically, I can look up how every implementation implements this when it isn't supported and do a compile-time check for it, but this is a truly terrible solution (which I have demonstrated below).  I do not want an MPI application to compile if it is certain to not work.</div><div> </div><div>#if defined(MPICH)</div><div>#if defined(MPI_INTEGER) && MPI_INTEGER=="((MPI_Datatype)MPI_DATATYPE_NULL)"</div><div>#error If you want Fortran, get a Fortran!</div><div>#endif</div><div>#endif</div>







<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Doing this inside a GNU Autoconf/configure script is very, very difficult because of the huge differences in how you launch MPI applications across different HPC environments.<br>
<br></blockquote><div><br></div><div>Indeed.  It makes cross-compilation impossible on systems like Blue Gene and Cray, which do not allow one to launch an MPI application on the login node, and likely not the service node.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Their (strong) preference is that you can have a simple compilation test in the GNU Autoconf/configure script that just tries to compile something like the following:<br>
<br>
-----<br>
#include <mpi.h><br>
MPI_Datatype foo = MPI_INTEGER;<br>
-----<br>
<br>
If that compiles, then your MPI has Fortran support.<br>
If it doesn't compile, your MPI doesn't have Fortran support.<br>
<span class=""><br></span></blockquote><div><br></div><div>Exactly.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
> In the moment,in the case of a missing accompanying Fortran Compiler,<br>
> an application or middleware that wants to handle<br>
> MPI Fortran datatypes must handle both cases<br>
> (1) mpi.h does not provide a specific MPI Fortran datatype<br></span></blockquote><div><br></div><div>This is what I want.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
> (2) mpi.h provides this MPI Fortran datatype as MPI_DATATYPE_NULL<br>
><br></span></blockquote><div><br></div><div>I think this is what is implemented today and it is the only reasonable implementation of what the text says (and doesn't say) right now.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
> The additional case, that it is mapped to a real datatype is not<br>
> an exception, because it defines some sort of accompanying Fortran Compiler.<br>
><br>
> I would prefer that the MPI standard defines, which of the two<br>
> options should be implemented.<br>
<br>
</span>I think JeffH and Jed want (1).<br>
<br>
I think I want (1), too.<br>
<span class=""><br></span></blockquote><div><br></div><div>You are as intelligent as your name suggests :-)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
> As said at the beginning, I would prefer (1),<br>
> - as mpich is doing it in general, and<br>
> - OMPI is doing it partially,<br>
> whereas (2) was not done by mpich nor by OMPI.<br>
<br></span></blockquote><div><br></div><div>As I showed earlier, MPICH does 2.  Do I misunderstand you?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
</span>I think you have (1) and (2) backwards in this paragraph.<br>
<div class=""><div class="h5"><br></div></div></blockquote><div><br></div><div>I think I am confused now.</div><div><br></div><div>Jeff</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5">
--<br>
Jeff Squyres<br>
<a href="mailto:jsquyres@cisco.com">jsquyres@cisco.com</a><br>
For corporate legal information go to: <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>
mpiwg-fortran mailing list<br>
<a href="mailto:mpiwg-fortran@lists.mpi-forum.org">mpiwg-fortran@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran" rel="noreferrer" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Jeff Hammond<br><a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br><a href="http://jeffhammond.github.io/" target="_blank">http://jeffhammond.github.io/</a></div>
</div></div>