MPIR_
is usually used for symbols which are defined in the top-level layer which is below the actual MPI_
interface but above the Abstract Device Interface (ADI), whose symbols usually have an MPID_
prefix. Most MPIU_
symbols are also defined at this layer, but they are usually for completely separate utility routines which do not implement any "MPI business logic". As always with these naming conventions, the convention has not been followed 100% strictly in all cases.
Source: my brain; I've been developing MPICH for >5 years.
Using non-MPI_
names for routines defined inside the library is important, since it means that we won't accidentally stomp on the MPI namespace and potentially conflict with future standardization or confuse users about what is actually standard functionality: http://www.mpi-forum.org/docs/mpi22-report/node31.htm#Node31
We use the ISO C declaration format. All MPI names have an MPI_
prefix, defined constants are in all capital letters, and defined types and functions have one capital letter after the prefix. Programs must not declare variables or functions with names beginning with the prefix MPI_
. To support the profiling interface, programs should not declare functions with names beginning with the prefix PMPI_
.