next up previous contents
Next: Context Identifier Up: Data Transfer Protocol Previous: Introduction

Process Identifier

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.

Advice to implementors.Implementors are encouraged to use an OS-wide unique p_pid identifier within a host, such as a UNIX pid. This would support IMPI host sharing in practice, and can be helpful for situations such as testing IMPI functionality.(End of advice to implementors.)

IMPI Protocol ver 0.0
DRAFT March 22, 1999