The Memo System

Memo is a distributed shared memory system in which parallel processes communicate through a shared directory of unordered queues.


Table of Contents
Availability
Documentation
Informal history
Related IIT Parallel Processing Projects
Related projects elsewhere
People

Availability

There are two versions available. Both versions are offered utterly without warrantee and without support.

memo.c
memo.h
New for SGIs with standard C prototypes. Our thanks to Sungsoo Kim for doing the conversion.
memo.zip The shared-memory version of Memo.
dmemo-1.2.tgz The network version. Contains its own manual. Tarred and gzipped. (Currently unavailable while we check out some installation problems.)

Documentation

Comparison to Linda Brief comparison of Memo to the Linda system which inspired it.
The Memo Manual The manual for the shared-memory memo system.
Chapter 4 of CS546 Class Notes: "The MEMO System: A Shared Directory of Unordered Queues" Describes the Memo system, gives a collection of programming techniques, and discusses Memo's relationship to the Linda system.
Memo Programming Techniques Under Construction. Paper on programming techniques for Memo.

Informal history

MEMO was designed by Thomas W. Christopher. The inspiration was the Linda parallel programming system which allows parallel processes to communicate through a "tuple space." It became clear from looking at Linda algorithms that the tuple space was being used mostly as a shared directory of unordered queues. Thus it appeared that tuple space itself was not a valuable innovation, but rather that it was its ability to implement a dynamic shared directory of queues that made tuple space useful. The next step was obvious: implement a shared directory of queues directly.

The shared memory version was implemented by Christopher for use in his course CS546, "Parallel Processing," at Illinois Institute of Technology.

Bill O'Connell designed and lead a project designing and implementing D-Memo, a distributed-memory version. O'Connell was mainly interested in D-Memo as a proof of concept for his parallel processing frameworks and has not chosen to make this first version of D-Memo into a product.

The D-Memo version available here was written by Mike Isely as an extension of his CS546 class project and benefiting from his work on O’Connell's D-Memo project.

George K. Thiruvathukal was the leader of the High-Performance Languages and Systems group at the time O'Connell was working on D-Memo and took part in the implementation. Thiruvathukal was particularly involved in the "transferables' framework" which would allow both the disk storage and the communication across a network of linked structures of C++ objects. The transferables' framework does not appear in the Memo systems available here; they are packages for C rather than C++. It does, however, appear in Thiruvathukal's TLC data structure package for C++ and in his Enhanced Actors parallel programming package.

Related IIT Parallel Processing Projects

MDC90 Our Message-Driven Computing language. Implemented as an extension of C using a preprocessor, it uses a distributed-memory/ pattern-driven-control paradigm. It was used very successfully by Dr. Peter Wohl in his work on machine learning.
AMDC Active Message-Driven Computing is a MIMD-DM package in C that allows active messages to be sent to abstract locations where they execute scripts and access other messages in a table at the location. It can be used to implement
  • direct communication
  • distributed shared memory (including MEMO)
  • macro-dataflow

Implementing AMDC was the class project of CS546 "Parallel Processing" this Autumn '96 semester.

Enhanced Actors Dr. George K. Thiruvathukal's object-oriented message-driven computing package for C++.

Related projects elsewhere

http://www.cs.yale.edu/HTML/YALE/CS/Linda/linda.html The Linda project.
http://www.cs.yale.edu/HTML/YALE/CS/Linda/piranha.html The Piranha project (related to Linda).
Table of links to parallel processing projects Here and elsewhere

People

Dr. Thomas W. Christopher Invented, designed, and implemented Memo.
Dr. William O'Connell Lead the team that designed and implemented D-Memo atop his parallel processing frameworks as a proof of concept. Dr. O'Connell has not chosen to make his implementation into a product.
Mr. Mike Isely Was a member of O'Connell's team. Isely later implemented the D-Memo system available here.
Dr. George K. Thiruvathukal Worked with O'Connell's team. He has designed and implemented Enhanced Actors, an application of object-oriented technology to message-driven computing.

Back to: Thomas Christopher's home page; Computer Science Department's home page; IIT's home page