<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:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:游ゴシック;
        panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@游ゴシック";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:99.25pt 3.0cm 3.0cm 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></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-GB link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hi Jeff,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>No, my_function is not compatible with <span style='font-family:"Courier New"'>MPI_User_function_f18</span> as it has different characteristics.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It is also unlikely to work in practice despite the Intel acceptance at compile time, as an assumed-rank descriptor is unlikely to be exactly the same as a Fortran-90 assumed-shapee array descriptor.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Also REAL is not compatible with TYPE(*) so it fails on that front too.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On a more philosophical note, I don’t quite see what purpose LEN is meant to achieve. Surely you just pass it the array slice you want to be reduced, no need to tell it the size separately, no?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Cheers,<o:p></o:p></p><p class=MsoNormal style='text-align:justify;text-justify:inter-ideograph'><span lang=EN-US style='font-size:10.5pt'>-- </span><span style='font-size:10.5pt'><o:p></o:p></span></p><p class=MsoNormal style='text-align:justify;text-justify:inter-ideograph'><span lang=EN-US style='font-size:10.5pt'>..............Malcolm Cohen, NAG Oxford/Tokyo.</span><span style='font-size:10.5pt'><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>From:</b> mpiwg-fortran <mpiwg-fortran-bounces@lists.mpi-forum.org> <b>On Behalf Of </b>Jeff Hammond via mpiwg-fortran<br><b>Sent:</b> Monday, November 21, 2022 12:09 AM<br><b>To:</b> MPI Forum <mpiwg-fortran@lists.mpi-forum.org><br><b>Cc:</b> Jeff Hammond <jeff.science@gmail.com><br><b>Subject:</b> [MPIWG Fortran] Fwd: proper modern Fortran support for user-defined reductions<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><div><p class=MsoNormal><span style='font-family:"Courier New"'>Brandon Cook raised an interesting issue w.r.t. user-defined reductions and Fortran 2008 in </span><a href="https://github.com/mpi-forum/mpi-issues/issues/576" target="_blank"><span style='font-family:"Courier New"'>https://github.com/mpi-forum/mpi-issues/issues/576</span></a><span style='font-family:"Courier New"'>.</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'><br>I looked at this and it appears we can do something better (<a href="https://github.com/mpi-forum/mpi-issues/issues/576#issuecomment-1317157138" target="_blank">https://github.com/mpi-forum/mpi-issues/issues/576#issuecomment-1317157138</a>), namely:<br><br>    abstract interface<br><br>    subroutine MPI_User_function_f18(invec, inoutvec, len, datatype)<br>        use mpi_f08, only : MPI_Datatype<br>        implicit none<br>        type(*), dimension(..), target, intent(in) :: invec<br>        type(*), dimension(..), target, intent(inout) :: inoutvec<br>        integer, intent(in) :: len<br>        type(MPI_Datatype), intent(in) :: datatype<br>    end subroutine<br><br>    end interface<br><br>which allows the user to create their own reduce functions, e.g.:<br><br>    subroutine MY_function(invec, inoutvec, len, datatype)<br>        use mpi_f08, only : MPI_Datatype<br>        implicit none<br>        real, dimension(:), target, intent(in) :: invec<br>        real, dimension(:), target, intent(inout) :: inoutvec<br>        integer, intent(in) :: len<br>        type(MPI_Datatype), intent(in) :: datatype<br>        inoutvec = inoutvec +  invec<br>    end subroutine<br><br>Do people think this is worth proposing for MPI-5?  It would require a new MPI_Op_create function, but already did one for large-count.</span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>Also, can a proper Fortran language lawyer like Bill Long confirm that MY_function is compatible with the abstract interface above?  Intel Fortran doesn't complain, but I want to be sure.</span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>Thanks!</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>Jeff</span><o:p></o:p></p></div><div><div><p class=MsoNormal><span style='font-family:"Courier New"'><br>--<br>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></span><o:p></o:p></p></div></div></div></div></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>