Steve Karmesin, March 5, 2000
There are many different ways to express communication in a program. A standard way to do it in many scientific codes is with two sided, or cooperative, messaging with a library such as MPI or PVM. These libraries are characterized by there being two parts to getting a message from point A to point B:
This is fairly flexible, but it has come constraining implications. One is that the sending and receiving sides must agree on the tags to be used. Another is that because there must be an explicit send and an explicit receive, there is an implied synchronization between the sender and receiver.
Sometimes those are desirable properties, but sometimes they are not. The ACL-Cheetah library is provides mechanisms to relax those constraints. It can put and get data between contexts without intervention of the remote side, and it can invoke functions on the remote side in a largely asynchronous manner. This expands the kinds of programs that are easy to write.
ACL-Cheetah is designed in such a way that it can be retargeted to different communication infrastructures, or even to multiple different communication mechanisms at once, using controllers to encapsulate the details of a communication mechanism.
ACL-Cheetah also has a mechanism called MatchingHandler, which allows you to regulate on the receiving side when remote function invocations get called, to make sure that the data they need is ready.
This document is broken up into several sections:
The Cheetah is under continuing development and maintenance. For the information on the current state of the library, please see http://www.acl.lanl.gov/cheetah. NOT WORKING YET!