<html 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:"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:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Consolas;
        color:windowtext;
        font-weight:normal;
        font-style:normal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">All,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">I'm sort of new to MPICH and I'm encountering one call that works with Open MPI but not MPICH. As such, I'm wondering if I built MPICH incorrectly or incompletely (always easy to miss
 a configure flag!).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">To wit, I have a code like:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">program main<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">   use mpi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">   use iso_fortran_env, only: INT64<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">   use iso_c_binding, only: C_PTR<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">   integer(kind=INT64) :: sz<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">   type (c_ptr) :: ptr<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">   call MPI_Alloc_mem(sz, MPI_INFO_NULL, ptr, ierror)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">end program main<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">If I compile with GCC 12.1 + Open MPI 4.1.3, all is well:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">$ mpifort --showme:version<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">mpifort: Open MPI 4.1.3 (Language: Fortran)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">mathomp4@discover23 ~/MPITests/CPtr master ?25<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">$ mpifort support_for_mpi_alloc_mem_cptr.F90<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">mathomp4@discover23 ~/MPITests/CPtr master ?25<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">$ echo $?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">I'll also say Intel MPI builds this code as well.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">But with MPICH 4.1.2 I just built:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">$ mpifort support_for_mpi_alloc_mem_cptr.F90<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">support_for_mpi_alloc_mem_cptr.F90:9:53:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">    9 |    call MPI_Alloc_mem(sz, MPI_INFO_NULL, ptr, ierror)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">      |                                                     1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">Error: Type mismatch in argument 'baseptr' at (1); passed TYPE(c_ptr) to INTEGER(8)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">Now, my configure lines to Open MPI and MPICH are pretty boring, so the resulting mpiforts are as well:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">$ mpifort -show<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">gfortran -I/discover/swdev/gmao_SIteam/MPI/openmpi/4.1.3/gcc-12.1.0/include -pthread -I/discover/swdev/gmao_SIteam/MPI/openmpi/4.1.3/gcc-12.1.0/lib -L/discover/swdev/gmao_SIteam/MPI/openmpi/4.1.3/gcc-12.1.0/lib
 -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">$ mpifort -show<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">gfortran -I/discover/swdev/gmao_SIteam/MPI/mpich/4.1.2/gcc-12.1.0/include -I/discover/swdev/gmao_SIteam/MPI/mpich/4.1.2/gcc-12.1.0/include -L/discover/swdev/gmao_SIteam/MPI/mpich/4.1.2/gcc-12.1.0/lib
 -lmpifort -Wl,-rpath -Wl,/discover/swdev/gmao_SIteam/MPI/mpich/4.1.2/gcc-12.1.0/lib -Wl,--enable-new-dtags -lmpi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">But I see Open MPI has that "mpi_usempi_ignore_tkr", is it possible that's what is doing it?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">Perhaps we just need to recode the code (using transfer, etc?)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">Thanks for any help,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas">Matt<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas;mso-ligatures:none">--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas;mso-ligatures:none">Matt Thompson, SSAI, Sr Scientific Programmer/Analyst<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas;mso-ligatures:none">NASA GSFC,    Global Modeling and Assimilation Office<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas;mso-ligatures:none">Code 610.1,  8800 Greenbelt Rd,  Greenbelt,  MD 20771<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas;mso-ligatures:none">Phone: 301-614-6712                 Fax: 301-614-6246<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:Consolas;mso-ligatures:none"><a href="http://science.gsfc.nasa.gov/sed/bio/matthew.thompson"><span style="color:#0563C1">http://science.gsfc.nasa.gov/sed/bio/matthew.thompson</span></a></span><o:p></o:p></p>
</div>
</div>
</body>
</html>