next up previous contents
Next: IMPI_C_NHOSTS Up: The COLL command Previous: Client labels.

IMPI_C_VERSION

The payload following this label is to comprise of one or more structures of the following type:

        typedef struct {
                IMPI_Uint4 major;
                IMPI_Uint4 minor;
        } IMPI_Version;

The client sends an IMPI_Version for each version of the IMPI protocols that it supports. All IMPI clients must support version 0.0.

The length of the array of IMPI_Version structures can be calculated from the payload len and the fact that every client must support version 0.0. Each clients' array of version numbers must be in strictly ascending order.

Each client pair chooses the highest version number that both support. This version number determines the nature and content for all future communication between the hosts of each client pair, and may also determine which labels the client will send to the server.


\begin{discuss}The above description implies that implementations may be forced ...
... Or, should an IMPI-wide highest common
version number be chosen?
\end{discuss}

Rationale.Exchanging an IMPI version number between the clients allows for newer protocols to be developed while still maintaining compatibility with older codes. For example, an IMPI version could mandate the minimal set of IMPI COLL labels to be recognized. It is expected that after IMPI version 0.0 begins to be used by real applications, changes in the protocols will be suggested and adopted by the IMPI forum. This will change the IMPI version number. The major version number indicates large differences between protocols, while the minor version number indicates smaller changes (such as corrections) in the published protocols. The IMPI version number should not be confused with a particular vendor's software version number. The IMPI version number indicates a published set of protocols, not a particular implementation of those protocols. Forcing all clients to implement version 0.0 maximizes flexibility and potential for interoperability.(End of rationale.)

For example, if the server broadcasts the following data for the IMPI_C_VERSION label:

        IMPI_Int4 cmd         = IMPI_CMD_COLL
        IMPI_Int4 len         = 48
        IMPI_Int4 label       = IMPI_C_VERSION
        IMPI_Int4 client_mask = 0x7
        IMPI_Uint4 major      = 0             // from client 0
        IMPI_Uint4 minor      = 0
        IMPI_Uint4 major      = 0             // from client 1
        IMPI_Uint4 minor      = 0
        IMPI_Uint4 major      = 0
        IMPI_Uint4 minor      = 1
        IMPI_Uint4 major      = 0             // from client 2
        IMPI_Uint4 minor      = 0
        IMPI_Uint4 major      = 0
        IMPI_Uint4 minor      = 1

Client 0 will use version 0.0 to communicate with both client 1 and client 2. But client 1 and 2 will use version 0.1 to communicate with each other, since they both share that value.


next up previous contents
Next: IMPI_C_NHOSTS Up: The COLL command Previous: Client labels.
IMPI Protocol ver 0.0
DRAFT March 22, 1999