Wrapping routines with choice buffers from Fortran
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
participants (1)
-
Gregor Corbin