Distributed Memory Programming

6.3 Active Messages

Quoting from "Active Messages: a Mechanism for Integrated Communication and Computation", by von Eicken, Culler, Goldstein and Schauser, 1992 [Proceedings of the 19th Int'l. Symposium on Computer Architecture, ACM Press]:

Active Messages is an asynchronous communication mechanism intended to expose the full hardware flexibility and performance of modern interconnection networks. The underlying idea is simple: each message contains at its head the address of a user-level handler which is executed on message arrival with the message body as argument. The role of the handler is to get the message out of the network and into the computation ongoing on the processing node. The handler must execute quickly and to completion. ... this corresponds closely to the hardware capabilities in most message passing multiprocessors where a privileged interrupt handler is executed on message arrival, and represents a useful restriction on message driven processors.

Under Active Messages the network is viewed as a pipeline operating at a rate determined by the communication overhead and with a latency related to the message length and the network depth. The sender launches the message into the network and continues computing; the receiver is notified or interrupted on message arrival and runs the handler. To keep the pipeline full, multiple communication operations can be initiated from a node, and computation proceeds while the messages travel through the network. To keep communication overhead to a minimum, Active Messages are not buffered except as required for network transport. Much like a traditional pipeline, the sender blocks until the message can be injected into the network and the handler executes immediately on arrival.

... Active Messages is not a new parallel programming paradigm on par with send/receive or shared-memory; it is a more primitive communication mechanism which can be used to implement these paradigms (among others) simply and efficiently. Concentrating hardware design efforts on implementing fast Active Messages is more versatile than supporting a single paradigm with special hardware.

  1. Restricted to SPMD Programming Model

    The address of the message handler must be known at message-transmission time to the sender; this requires that the code loaded into all processors be exactly the same, else one processor wouldn't know where a particular module might be located on another processor.

  2. Examples:

    At the time of the first writing of this module, Active Messages had been implemented on only 2 hardware platforms, both for experimental verification purposes:

    • CM-5 (CMAML)

      Send+Recv overhead is rated at 95 micro-seconds, while Active Messages yield a Send+Handle of 3.2 micro-seconds, a 30-times improvement in overhead.

    • nCUBE/2 Send+Receive overhead is rated at 150 microseconds, while Active Messages yield a Send+Handle of 24 microseconds, a 6-times improvement in overhead.

    Recently, an implementation on the SP-2 has become available, as well, but characteristics of its behavior and capability in actual use were not well-known in time for this workshop; as that information becomes available, this document will be updated to reflect it.