MPI_GROUP_F2C(3)

πŸ“¦
version 5.0.10 Β· 4 versions
, in ubuntu stonking

πŸŽ€ MPI_GROUP_F2C(3) πŸŽ€

okay bestie, so this is the manual page for a whole little family of Open MPI functions πŸ’… and it's giving "translator" energy, because that's literally what they do. Folding the manual name in right here so you know what you're reading: MPI_GROUP_F2C(3) β€” iconic, we stan a page that does the most with sixteen functions and one job.

Here's the whole girlgang of them ✨:

  • MPI_Comm_f2c <#mpi-comm-f2c>
  • MPI_Comm_c2f <#mpi-comm-c2f>
  • MPI_File_f2c <#mpi-file-f2c>
  • MPI_File_c2f <#mpi-file-c2f>
  • MPI_Info_f2c <#mpi-info-f2c>
  • MPI_Info_c2f <#mpi-info-c2f>
  • MPI_Message_f2c <#mpi-message-f2c>
  • MPI_Message_c2f <#mpi-message-c2f>
  • MPI_Op_f2c <#mpi-op-f2c>
  • MPI_Op_c2f <#mpi-op-c2f>
  • MPI_Request_f2c <#mpi-request-f2c>
  • MPI_Request_c2f <#mpi-request-c2f>
  • MPI_Type_f2c <#mpi-type-f2c>
  • MPI_Type_c2f <#mpi-type-c2f>
  • MPI_Win_f2c <#mpi-win-f2c>
  • MPI_Win_c2f <#mpi-win-c2f>

…and what do they do? They translate a C handle into a Fortran handle, or the other way around. That's it, that's the whole vibe. πŸ”


✨ SYNTAX ✨

🫢 C Syntax 🫢

#include <mpi.h>

MPI_Comm MPI_Comm_f2c(MPI_Fint comm)
MPI_Fint MPI_Comm_c2f(MPI_Comm comm)

MPI_File MPI_File_f2c(MPI_Fint file)
MPI_Fint MPI_File_c2f(MPI_File file)

MPI_Group MPI_Group_f2c(MPI Fint group)
MPI_Fint MPI_Group_c2f(MPI Group group)

MPI_Info MPI_Info_f2c(MPI_Fint info)
MPI_Fint MPI_Info_c2f(MPI_Info info)

MPI_Message MPI_Message_f2c(MPI_Fint message)
MPI_Fint MPI_Message_c2f(MPI_Message message)

MPI_Op MPI_Op_f2c(MPI_Fint op)
MPI_Fint MPI_Op_c2f(MPI_Op op)

MPI_Request MPI_Request_f2c(MPI_Fint request)
MPI_Fint MPI_Request_c2f(MPI_Request request)

MPI_Datatype MPI_Type_f2c(MPI_Fint datatype)
MPI_Fint MPI_Type_c2f(MPI_Datatype datatype)

MPI_Win MPI_Win_f2c(MPI_Fint win)
MPI_Fint MPI_Win_c2f(MPI_Win win)

πŸ“– DESCRIPTION πŸ“–

okay so here's the tea β˜•: handles get passed between Fortran and C by using an explicit C wrapper to convert Fortran handles into C handles. Periodt. There is no direct access to C handles in Fortran. None. Don't even try it.

The type definition MPI_Fint is provided in C for an integer of the size that matches a Fortran INTEGER; usually, MPI_Fint will be equivalent to int. (yeah, "usually" β€” it's giving mostly, and that's the note we're working with 🫠)

And the handle translation functions? They're provided in C to convert from a Fortran handle (which is literally just an integer, bestie) to a C handle, and vice versa. πŸ”„

for example β€” and I love a good example, it's the main character of this section:

  • if comm is a valid Fortran handle to a communicator, then MPI_Comm_f2c <#mpi-comm-f2c> returns a valid C handle to that same communicator βœ…
  • if comm = MPI_COMM_NULL (that's the Fortran value, ok), then MPI_Comm_f2c <#mpi-comm-f2c> returns a null C handle πŸ«₯
  • if comm is an invalid Fortran handle, then MPI_Comm_f2c <#mpi-comm-f2c> returns an invalid C handle πŸ’€

πŸ’€ NOTE πŸ’€

okay this part is important, no cap:

This function does not return an error value. Consequently, the result of calling it before MPI_Init <#mpi-init> or after MPI_Finalize <#mpi-finalize> is undefined.

so like… don't. seriously. undefined behaviour is not the vibe check you want to fail. πŸ™ˆ


2003-2026, The Open MPI Community


and that's the whole page bestie, you ate it up πŸ’…βœ¨ it's from the Open MPI manual, page MPI_GROUP_F2C(3), dated Sep 10, 2026 β€” go forth and translate those handles, you've got this πŸ«ΆπŸ¦‹

πŸ“¦ where this page comes from