------------------------------------------------------------------------

                PVM Version 3.3.0 is Available on Netlib
                              04 June 1994

------------------------------------------------------------------------

Besides bug fixes to 3.2, there are many new features in Version 3.3
(see man pages for more details):

  -------- Communication --------

* On-host communication (pvmd-task, task-task Direct Route on same
  host) uses Unix domain sockets, improving bandwidth and latency
  by 1.5-2x.  It's enabled only for about half the architectures
  (those we could test easily).  It's disabled by adding -DNOUNIXDOM
  to ARCHCFLAGS in conf/(ARCH).def.  To enable it on your machine,
  edit (ARCH).def and remove -DNOUNIXDOM.

* On-host communication uses shared memory, on SPARC, SGI, DEC, IBM,
  and KSR multiprocessor machines:  SUNMP, SGIMP, ALPHAMP, POWER4, KSR1
  respectively.

  -------- Message-Passing --------

* Inplace packing is implemented, but presently restricted to dense
  (stride = 1) data.

* New libpvm function pvm_trecv() blocks until a message is received or
  a specified time (in seconds and usec) elapses.

* New functions pvm_psend() and pvm_precv() combine packing and sending
  into a single call. They send and receive raw data buffers, 
  enabling more efficient implementation on machines such as multiprocessors.

  -------- Collective Communication ---------------------

* Group library now includes global reduce functions and gather/scatter
  to go with the existing broadcast and barrier functions.
  pvm_reduce() can perform global sum, max, min, product, or take a
  user defined reduce operation.  pvm_gather() gathers data from across
  the group of tasks into a vector.  pvm_scatter() scatters data in a
  vector to a group of tasks.

  -------- I/O ------------------------------------------

* New libpvm function pvm_catchout() automatically collects output of
  spawned tasks using control messages and output redirection.  Output
  can be appended to any FILE* (e.g. stdout).

  -------- Resource Manager and Process Starters --------

* The task and host schedulers (built in to the pvmds) are
  replaceable by writing a "resource manager task" and registering
  it with pvm_reg_rm().  Messages from calls such as pvm_spawn() and
  pvm_addhosts() are then intercepted by the resource manager.

* A task can register as a "tasker", to be used by the pvmd to start
  other tasks (instead of the usual fork() and exec()).  The pvmd sends
  a SM_STTASK message to the tasker.  The tasker notifies the pvmd on
  task exit with message SM_TASKX.  There is an example tasker in
  pvm3/tasker.

* A task can register with the master pvmd as a "hoster", meaning it
  starts new slave pvmds for the master.  The master sends a SM_STHOST
  message to the hoster and waits for a reply (SM_STHOSTACK).  There is
  an example hoster in pvm3/hoster.

  -------- Tracing --------

* Libpvm and the group library have parameter/result tracing.
  Trace data is collected in a manner similar to stdout and stderr -
  Tasks inherit a trace data destination and event mask which
  separately enables each libpvm call.  The console spawn command
  has new flag "-@" to enable tracing and new command "trace" to set
  the trace mask.

* A graphical PVM interface called XPVM has been developed
  to exploit the built in tracing. This package will be distributed
  in ready-to-run and source formats on netlib in a couple days.

  -------- Misc --------

* Environment variables are expanded when setting epath (ep= in the
  hostfile), and when setting bpath (bp=).

  The default epath (task executable search path) is now
      "pvm3/bin/$PVM_ARCH:$PVM_ROOT/bin/$PVM_ARCH"
  (user's private PVM bin directory, then the system PVM bin directory).
  This allows sharable binaries (e.g. the group server task) to be
  installed in a public place, while the user has a private bin
  directory.

* New hostfile option "ip=XXX" sets the name to resolve for the IP
  address of a host.  The default is the PVM hostname.

* New hostfile option "wd=XXX" sets the working dir of the pvmd on a
  machine.  The default is nothing, which leaves the pvmd in $HOME.

* New libpvm function pvm_archcode() maps architecture string to PVM
  data format code.  Can be used to decide when machines have
  equivalent data representations.

* Pvmd error log (/tmp/pvml.uid) entries can be timestamped with date
  and time (useful for debugging).  Add -DTIMESTAMPLOG to ARCHCFLAGS in
  conf/(ARCH).def or src/Makefile.aimk and rebuild the pvmd to enable
  it.

------------------------------------------------------------------------

Bug Fixes:

* XDR-encoded doubles pack and unpack correctly when split across
  message fragments.

* Last message no longer lost when a task sends over a Direct Route,
  then exits soon after.

* Task-Pvmd protocol message tags have moved out of user tag space, so
  small integer tags used with notify() no longer break libpvm.

* pvm_spawn() accepts an absolute path filename.  If the filename
  contains a '/' (either "/..." or ".../..."), it is exec()'d as is,
  otherwise the pvmd searches the epath (this is like shells).

* The group server is notified when tasks die and removes them from
  groups automatically.

* There were a few globals (not part of the programming interface) in
  libpvm whose names conflicted on some machines, so have been changed.

* The console can now alias a command to itself (like csh).

* Lots of random manual pages.

------------------------------------------------------------------------

Changes - Potential Incompatibilities:

* The PVM_ROOT envar now _must_ be set.  Put something like:

      setenv PVM_ROOT $HOME/pvm3

  in your .cshrc file (if you're using csh).
  You no longer are required to have PVM installed in ~/pvm3.

  Certain shells (ksh users take note) don't run a startup script in
  a non-login session, so you won't be able to do the above.  To find
  out if your setup works, try:

      rsh  Machine  'echo $PVM_ROOT'

  where Machine is the name of a PVM slave host.
  If not, you'll have to use the hostfile dx= option to set the
  correct path.  The lib/pvmd script then sets PVM_ROOT for you.
  You can do this either by creating a hostfile containing (for
  example):

      * dx=/usr/local/pvm3/lib/pvmd

  or directly from the console:

      pvm> add "somehost dx=/usr/local/pvm3/lib/pvmd"

* The hostfile options "pw" and "ms" have changed to "so=pw" and
  "so=ms".  This is necessary to allow them to be passed to the hoster
  in an extensible way.

* struct taskinfo is renamed pvmtaskinfo and has new field ti_pid,
  returning native process id of task.
  This is useful for writing debugger server tasks that can attach
  to running tasks.

* struct hostinfo is renamed pvmhostinfo.

* The SGI architecture has split into SGI and SGI5 to deal with
  incompatible OS releases (before / after 5.0).

* Console "ps" command displays:
                      HOST      TID     FLAG COMMAND

  unless -l flag is given, then:
                      HOST      TID     PTID    PID     FLAG COMMAND

* Defunct functions
      pvm_serror(), pvm_advise(), pvm_setdebug()
  have been ripped out.  Use pvm_setopt(), pvm_getopt().

------------------------------------------------------------------------

How to get it:

It's just been put on netlib2.CS.UTK.EDU and will propagate to the other
servers soon.

From Netlib, to get a uuencoded, compressed tarfile:
    echo "send pvm3.3.tar.z.uu from pvm3" | mail netlib@ORNL.GOV
or to get a shar file:
    echo "send pvm3.3.shar from pvm3" | mail netlib@ORNL.GOV

For more information from Netlib about PVM:
    echo "send index from pvm3" | mail netlib@ORNL.GOV

Using Xnetlib:
    select directory pvm3, file pvm3.3.tar.z.uu

Via FTP:
    host netlib2.CS.UTK.EDU, login anonymous, directory /pvm3

For more information about file retrieval from netlib:
    finger anon@netlib2.CS.UTK.EDU

Send bug reports, comments, questions to:
    pvm@MSR.EPM.ORNL.GOV

Use newsgroup for discussion:
    comp.parallel.pvm

------------------------------------------------------------------------

Sincerely,
The PVM research group

/ Robert Manchek                University of Tennessee     /
/                               Computer Science Department /
/ (615)974-8295                 Ayres Hall #104             /
/ manchek@CS.UTK.EDU.           Knoxville TN  37996-1301    /
/     http://www.netlib.org/utk/people/BobManchek.html      /


