Messages exchanged between implementations are multiplexed in the channel. A system-wide unique process identifier is required to label the message source and destination. To support the MPI-2/ client/server functionality, a decentralized mapping of processes to identifiers is chosen. The IMPI_Proc process identifier is defined as the combination of a system-wide unique host identifier and a process identifier unique within the host:
typedef struct {
unsigned char p_hostid[16]; /* host identifier */
IMPI_Int8 p_pid; /* local process identifier */
} IMPI_Proc;
Typically, the host IP address is used as host identifier. A 16-byte container is defined to accommodate the IPv6 protocol.
Solutions with a restricted interoperability scope may select other host identification methods. IMPI does not mandate p_pid to be unique across all implementations within a given host. Thus IMPI does not guarantee interoperability between two implementations that share a host within a single MPI application.