AMDC: Active-Message-Driven Computing

Briefly

 

Go to AMDC home page Thomas Christopher HPLAS MDC90 Memo CS546 Table of links

For more information Reference Manual ref-1_2_1_3.html Reference Card ref_card-1_2_1_3.html Programming techniques techniques.html

An active message is a message that executes a procedure when it arrives. AMDC is a parallel programming system that is based on active messages.

AMDC (Active Message Driven Computing) is a successor to MDC90, Itinerant Actors, and MEMO-all systems designed and implemented at Illinois Institute of Technology.

In AMDC, computation occurs at abstract locations. That is to say, computation is conceived of as taking place at locations. The locations are actually implemented as data structures.

Each abstract location has a name. The names are structured: Each name is composed of a "symbol" and several integers. This form of name has been found to allow all common data structures to be constructed. For example, a distributed array can be composed of locations whose names all contain the same symbol and whose integers are the indices.

A location contains an input queue and a table of messages. Locations are dynamic: they are only allocated space when there is a message present in either the input queue or the table.

On a distributed-memory machine, locations are distributed across the machine. The name of a location is hashed to give the number of the machine it is on. The locations assigned to a machine are kept in a hash table.

A messages has several components:

A script a pointer to a procedure.
A tag a long integer to identify the purpose of the message. The messages within a table are looked-up by tag field.
A body a block of storage interpreted only by the AMDC programmer, not by the AMDC system.
A table of messages attached to the message. (This was found to be quite useful in MDC90.)

Processing is parallel across processors, round-robin by location within a processor, and FIFO by input queue within a location.

To perform a step of computation, the system pulls the first message off the input queue at a location and executes its script. The script is a procedure which is executed to completion. The script is passed pointers to the message and to the location. The script can create and send messages, store messages into and retrieve messages from tables, and perform the usual (arithmetic and logical) computations.

The programming techniques available to AMDC programmers include

CS546 built and published an AMDC system the Fall 1996 semester, see CS546 Fall 96 home page.