[comp.sys.isis] C++ tools under ISIS

ken@gvax.cs.cornell.edu (Ken Birman) (09/17/90)

We are investigating C++ support tools for `coarse-grained'
synchronous processing across distributed workstations. This exploratory
project is a joint undertaking between Dave Forslund's group in the
Advanced Computing Lab at Los Alamos National Labs and the NY CASE
Center at Syracuse Univ.  Nearly all the real work has been done by
Anand Rangachari, a grad student at SU.

We have developed some tools and support classes making it easier to
write C++ programs that use ISIS to implement a computational strategy
largely based on that discussed by Steele in his `Making asynchronous
parallelism safe for the world' paper in POPL '90. (See also Valiant's
`BSP' paper in August CACM and Forslund et al's paper in the '90
Usenix C++ conference proceedings). 

The basic model is in many respects a generalization of the data
parallel programming style typical of Connection Machine programs:

1. There are lots of (maybe virtual) processors, each containing ONE
    object.  The processors themselves need not be homogenous.  

2. One special object is a master.  All others are servers.
    The master controls the lifetimes and actions of the servers. 

3. Processors communicate through a channel that supports (maybe
    virtual) broadcast. Servers are addressible in some regular fashion,
    and there is a way for the master to communicate with only subsets  
    of servers.

4. All servers share the same behavioral interface. This is enforced
    by the requirement that all servers contain C++ methods that are
    known and callable from the master. This means that all servers
    are instances of the same C++ base class, or a subclass thereof.

5. Computation proceeds by the master invoking one method for
    some or all servers, waiting for them to finish, then invoking
    another, etc., until master termination.

6. Server methods proceed in a (perhaps virtually) synchronous manner.
    A set of explicit restrictions and support classes are needed to
    avoid nondeterminism and apparent asynchrony.

7. Data access for masters and servers are restricted to statically
    checkable safe methods. There are a lot of cases, each requiring
    explicit support mechanisms that we are working on. Most
    rules are embodied in the notion of commutable operations
    described by Steele.

We have some grandiose plans for ultimately integrating support for
this kind of model across varying levels of gramularity, so that it
applies equally well across fine-grained Connection-Machine-style
parallelism, lightweight processes, and distributed systems.

(We are well aware of the communication bottleneck problems of
broadcast-based master/server computation. We think we can adequately
address these with a combination of raw speed (e.g., FDDI) and data
access restrictions that are already implicit in the data integrity
rules.)

Our initial work does NOT support the full model outlined here.
We don't do any static checking about commutable operations,
we require all servers to be of the same class; not subclasses,
and so on.

Of course, we are using ISIS because of its support for
    * Heterogenous processors
    * Broadcast
    * Virtual synchrony

Our first pilot implementation is based on Master and Server class
templates (classes `MNI' and `SNI') that handle all of the ISIS calls
and related bookkeeping.  Programmers must specify their particular
master and server classes via a scheme similar to that used with Sun
`rpcgen' (in fact, the generator `nigen++' is a modified version of
rpcgen). Nigen++ generates the actual C++ classes in which all public
server methods are turned into ISIS entries.  Computation proceeds via
the kinds of simple master/server strategies described in the ISIS
documentation.

Thus, we have NOT tried to come up with an entire C++ front end
for ISIS; we are only class-ifying the functionality we happen
to need. However, this might serve as a basis or model for more
complete C++ support for ISIS.

This code is functional and apparently portable. It is running right
now on clusters of SparcStations. If you'd like a copy, just ask.
Keep in mind though that this code is not very polished, and will
be constantly evolving.

Doug Lea  dl@g.oswego.edu || dl@cat.syr.edu || (315)341-2688 || (315)443-1060
|| Computer Science Department, SUNY Oswego, Oswego, NY 13126 
|| Software Engineering Lab, NY CASE Center, Syracuse Univ., Syracuse NY 13244