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

Introduction

This chapter specifies the protocol used to transfer data between two MPI implementations. The protocol assumes a reliable ordered bidirectional stream communication channel between the two implementations. The channel is assumed to have a finite but unspecified amount of buffering. The protocol does not rely on the channel buffering for its operation. Processes on one side of the channel belong to the same MPI implementation. Two implementations communicate via a dedicated channel. The protocol does not preclude the setup of multiple channels between two implementations. Message routing (the selection of a channel to use for a particular message transfer) is not addressed here. It is assumed that an agent at the source determines the appropriate channel to use and directs the message to it. In essence, the data transfer protocol enables multiple processes to have timeshared access to a single communication channel, and provides mechanisms to throttle fast senders and cancel transferred messages.

The protocol is defined independently of the underlying channel technology. In practice, TCP/IP is expected to be used by most implementations. Some implementations may opt for a restricted interoperability space and choose a different channel technology, while others may support multiple technologies. The protocol does not specify the interaction between processes and their agent nor the medium used (e.g. sockets, shared-memory). To provide generality of implementation, no restrictions are placed on the process/agent setup (e.g. shared access to socket, file descriptor passing). To support the MPI-2/ client/server functionality, no parent/child relationship is assumed between processes and their agent.


next up previous contents
Next: Process Identifier Up: Data Transfer Protocol Previous: Data Transfer Protocol
IMPI Protocol ver 0.0
DRAFT March 22, 1999