[mpich-discuss] Wrapping routines with choice buffers from Fortran

Gregor Corbin g.corbin at fz-juelich.de
Thu Feb 20 09:56:39 CST 2025


Hi everyone,

I am developing a set of wrappers for the C and Fortran 2008 ('use 
mpi_f08') bindings. The F08 wrappers are intercepting the Fortran 
routines, for instance

     subroutine mpi_send_f08ts_(buf, count, datatype, dest, tag, comm, 
ierror)
         use :: mpi_f08, only: MPI_Comm, MPI_Datatype, PMPI_Send
         implicit none
         ! argument declarations ...
         ! wrapper code ...
         call PMPI_Send(buf, count, datatype, dest, tag, comm, ierror)
     end subroutine


In MPICH, the call to PMPI_Send is forwarded to MPIR_Send_cdesc which 
then calls MPI_Send internally. Since I also wrap MPI_Send in C, calls 
from Fortran go through both wrappers, which is not intended. This only 
happens for routines with choice buffers, though. Routines without 
buffers call into the PMPI interface (e.g. mpi_wait_f08_ calls 
MPIR_Wait_c which binds directly to PMPI_Wait). I attached a small 
example that demonstrates the issue.

Is this behavior intended? How can I correctly wrap these choice buffer 
routines?

Best,

Gregor Corbin



-------------- next part --------------
A non-text attachment was scrubbed...
Name: mpich-f08-double-wrap-bug.tar.gz
Type: application/gzip
Size: 1879 bytes
Desc: not available
URL: <http://lists.mpich.org/pipermail/discuss/attachments/20250220/e58a0031/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4832 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.mpich.org/pipermail/discuss/attachments/20250220/e58a0031/attachment.p7s>


More information about the discuss mailing list