Message Logging for One-Sided Communication

Problem Description

In our overview of MPI, we said that there are two styles of point-to-point communication, namely one- and two-sided. Two-sided communication is the usual send and receive. It is distinguished by the back that both the sending and receiving processors particular in the communication by calling either send or receive.

In one-sided communication, communication is initiated by a only by a single processor. When describing this model, we generally say that there are two communication primitives, get and put. A processor calls the get primitive in order to read a memory location a second processor. A processor calls put in order to write a value to a memory location on a second processor. Unless there is special hardware support, the processor on which the memory location resides must participate in the communication (in so much as they read the command and memory location from the network and send an acknowledgement or the back to the initiating processor), but the application running on the second processor does not receive any notification that the communication has occurred.

In class, we have discussed message logging protocols for two-sided communication, but to the best of our knowledge, no protocols have been developed for one-sided communication.

There may (emphasize, may) be some connections between this and the problem of providing fault-tolerance for software distributed shared memory systems.

Project Goals

The first goal of this project is to design and implement a message logging protocol for one-sided communication constructs. The second goal is to measure the overhead of your implementation of the protocol.

What you need to do

References