<div dir="ltr"><div>Terse minutes from the meeting follow. Please correct the record if I have made an error. Thanks to everyone who attended (I didn't transcript it, but at least Jeff H, Quincy K, Bill W, Bill L, Ken R, Julien J, Joseph S, Christian N, M Klemm, and Abraham N were there).</div><div><br></div><div>Decision 1:</div><div><br></div><div>The sizes of Fortran types is part of the MPI ABI and each choice/combination of these requires a separate implementation. The stipulation that the user must use exactly one of these throughout the application extends to the Fortran sizes.</div><div><br></div><div>Rationale: Every other option is extremely difficult to implement and unpleasant to reason about. If we figure out a more compact way to solve this problem, we can standardize it in the future. The O(n) solution is practical because today no implementation implements n>2.</div><div><br></div><div>Corollary 1:</div><div><br></div><div>There is one mpi.h, one libmpi_abi.so and one of each for the Fortran modules (and header, if supported) for every MPI C+Fortran ABI. If an implementation provides more than one MPI C+Fortran ABI, the implementation should distinguish them using paths.</div><div><br></div><div>Decision 2:</div><div><br></div><div>The sizes prescribed by the external32 specification are required to be supported in the ABI. All other sets of sizes are optional.</div><div><br></div><div>Corollary 2:</div><div><br></div><div>User code must do one of the following:</div><div>1. Assume the external32 ABI. If wrong SO is linked, that's a user error and bad things will happen.</div><div>2. Query the Fortran size ABI to ensure that the MPI SO matches the Fortran object code, and abort if they don't match.</div><div dir="ltr">2. Query the Fortran size ABI to ensure that the MPI SO matches the Fortran object code, and handle any differences manually, e.g. using MPI_INTEGER8 instead of MPI_INTEGER.<br></div><div dir="ltr"><br></div><div>Corollary 3:</div><div><br>MPI_Type_size must be callable before MPI_Init for all predefined datatypes (and only predefined datatypes), because this is how a user can detect potential ABI problems.</div><div><br></div><div>If people don't like this, then I'll add MPI_Abi_type_sizes that meets the need, without supporting the generality of MPI_Type_size.</div><div><br></div><div>Jeff</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 25, 2023 at 11:35 AM Jeff Hammond <<a href="mailto:jeff.science@gmail.com">jeff.science@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>We need to meet to discuss some of the open problems with the MPI Fortran ABI.</div><div><br></div><a href="https://www.when2meet.com/?21032099-f9qjp" target="_blank">https://www.when2meet.com/?21032099-f9qjp</a> <div><br></div><div>The agenda is <a href="https://docs.google.com/document/d/1URUIbHhGQfUcoNg_KTX1lhWS-Z80LwJA9LH2QL7HCuo/edit?usp=sharing" target="_blank">https://docs.google.com/document/d/1URUIbHhGQfUcoNg_KTX1lhWS-Z80LwJA9LH2QL7HCuo/edit?usp=sharing</a>. You'll need to request access to comment/edit because this email list is public and I do not want to deal with vandalism.</div><div><br></div><div>Jeff<br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" 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>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" 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>