$Id: README,v 1.2.4.41 2000/03/16 17:12:17 ajp Exp $


Author: Andrew J. Pitman <ajp@torch.rowan.edu>

Please see the file INSTALL for information on how to build and
install this package.

This is the eleventh official development release of pvmsync, including
the pvmsync client library.  pvmsync is a "distributed programming
environment" which provides synchronization mechanisms (mutexes,
semaphores, and condition variables) and shared data (integer,
floating point, and raw memory block) to processes distributed
throughout a beowulf cluster.  The idea is to facilitate communications
between processes running on a beowulf cluster in the form of shared
data.  Access to these data objects can be mediated by using the
synchronization mechanisms provided, much as with pthreads.  In fact,
pthreads is used internally by the servers to synchronize access to the
"pool" of these objects.  The pvmsync client library offers an API for
these services to C programmers.

Interactions between the client and the server holding a data object
(operations on an object) take place over a tcp connection to the
pvmsyncd daemon.  Each pvmsyncd daemon has it's own pool of objects
that can be handed out according to client requests.  The daemon then
acts as a broker in satisfying requests to operate on the object.  The
udp daemon, pvmobjd, answers broadcast requests asking how many objects
of a certain type are contained on the server, or whether or not an
object with the given symbol name (given at initialization) exists in
it's pool.

If you're running pvmsync on a cluster that has home directories
NFS-mounted, and you have TMPDIR set to a directory in your home, you
will be certain to have problems!  Keep the directory where the
UNIX domain socket and run files (logs) reside local so daemons on
different nodes don't clash in unpredictable ways or refuse to start.
By default, the runfiles and the UNIX domain socket can be found in the
directory /tmp/.pvmsync (or $TMPDIR/.pvmsync).  These honor the TMPDIR
variable, so be very careful to unset it if you must.

If you're starting the daemons automatically (and I'd expect you
should), it is not recommended that you start them as root.  Run the
daemons as user "nobody" or another special user created specifically
for the purpose of running the daemons, or at least run them from your
own, non-privileged account.  The daemons should be run on each and
every node in a beowulf cluster.

Please note that pvmsync version 0.40 and above are incompatible with
pvmsync version 0.39 and previous.  This is due to the fact that the
definitions for object types were changed in this release.  Also,
version 0.44 is incompatible with versions 0.43 and earlier, due to
the fact that both daemons now listen on port 1180.  pvmsyncd on tcp
and pvmobjd on udp.  See CHANGES.

The new client library (libpvmsync-1.2.45) is definitely incompatible
with the older versions of the library (0.44 and previous), since
the API has changed.  See CHANGES.

Hopefully, version 0.45 will be the last development release.  If
not too much goes wrong with this release, the next will hopefully
be a "stable" or "production" release.  The interface should not
change much, but there will be bugfixes.

Right now, pvmsync runs only on Linux, as far as I know.  Also, I
haven't tried it out on architectures other than x86, although I
don't forsee any problems with getting this to run on other machine
types.  If anyone would like to port pvmsync to another operating
system other than Linux, please contact me.

                                            --Andrew


