
         PVM version 3.4:  Parallel Virtual Machine System
               University of Tennessee, Knoxville TN.
           Oak Ridge National Laboratory, Oak Ridge TN.
                   Emory University, Atlanta GA.
      Authors:  J. J. Dongarra, G. E. Fagg, G. A. Geist,
                 J. A. Kohl, R. J. Manchek, P. Mucci,
         P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
                   (C) 1997 All Rights Reserved

                              NOTICE

 Permission to use, copy, modify, and distribute this software and
 its documentation for any purpose and without fee is hereby granted
 provided that the above copyright notice appear in all copies and
 that both the copyright notice and this permission notice appear in
 supporting documentation.

 Neither the Institutions (Emory University, Oak Ridge National
 Laboratory, and University of Tennessee) nor the Authors make any
 representations about the suitability of this software for any
 purpose.  This software is provided ``as is'' without express or
 implied warranty.

 PVM version 3 was funded in part by the U.S. Department of Energy,
 the National Science Foundation and the State of Tennessee.

________________________________________________________________________
WHAT IS PVM?

PVM is a software system that enables a collection of heterogeneous
computers to be used as a coherent and flexible concurrent computational
resource.

The individual computers may be shared- or local-memory multiprocessors,
vector supercomputers, specialized graphics engines, or scalar
workstations, that may be interconnected by a variety of networks,
such as ethernet, FDDI.

User programs written in C, C++ or Fortran access PVM through library
routines.


UNPACKING

This distribution contains source code, simple examples, and run-time
support for PVM version 3.  The documentation for PVM can be obtained
separately from Netlib.  To get a list of available subsets, send
e-mail to "netlib@ORNL.GOV" with the subject:  "send index from pvm3".

Files in the distribution unpack in directory pvm3.  The pvm3 directory
can reside in either a private or shared disk area.  Installations for
multiple machine architectures can coexist because compiled files are
placed in subdirectories named for each architecture ($PVM_ARCH).

Some of the more important directories are:

  Directory   Contains
  ---------------------------------------------------------------
  bin/$PVM_ARCH  PVM user program executables (examples & your programs)
  conf           Make configuration files for all PVM architectures
  console        Source for the pvm console
  doc            Miscellaneous documentation
  examples       Example PVM program source
  gexamples      More example PVM programs - for group library
  hoster         An example "hoster" program
  include        Header files for PVM programs
  lib            Generic system executables (scripts)
  lib/$PVM_ARCH  System executables (pvmd, console, etc.)
  libfpvm        Source for the libfpvm Fortran library
  man/man[13]    Online manual pages (nroff format)
  misc           Some PVM examples and utilities
  patches        Patch files and instructions, as they are released
  pvmgs          Source for the libgpvm library and group nameserver
  rm             An example resource manager for PVM
  src            Source for the libpvm library and pvmd daemon
  src/$PVM_ARCH  Additional source code for specific machines
  tasker         An example "tasker" program for PVM
  tracer         An example "tracer" program for PVM
  xep            An example interactive X-Window program


BUILDING AND INSTALLING

Before building or running PVM, you must set the environment variable
PVM_ROOT to the path where PVM resides, i.e. the path of this directory.
This can be in a private area, for example $HOME/pvm3, or a public one,
such as /usr/local/pvm3.

If your shell is csh, add a line such as:

    setenv PVM_ROOT $HOME/pvm3

to your .cshrc file.  If you use a shell that reads .profile, such as sh
or ksh, or .bashrc for bash, add the following lines to that file:

    PVM_ROOT=$HOME/pvm3
    export PVM_ROOT

The use of this variable and others is explained more fully in the
pvm_intro man page.

You can also include an appropriate shell startup file stub to set
other PVM environment variables and to add PVM directories to your
execution path.  Inert the matching stub file, pvm3/lib/cshrc.stub,
pvm3/lib/kshrc.stub or pvm3/lib/bashrc.stub, after your declaration
of PVM_ROOT in your shell startup file.

To build PVM for your system, type "make" in this directory.  Make
will use aimk to build the daemon executable (pvmd3), the C library
(libpvm3.a), the Fortran library (libfpvm3.a) and the console client
program (pvm).

The libraries and executables are installed in $PVM_ROOT/lib/$PVM_ARCH,
where $PVM_ARCH is the host architecture name, e.g. "CRAY".

The scripts $PVM_ROOT/lib/pvm and $PVM_ROOT/lib/pvmd are used,
respectively, to start the PVM console and pvmd.  They determine
the machine architecture and run the actual programs in the
$PVM_ROOT/lib/$PVM_ARCH directory.  You can either copy these
scripts to your bin directory or add $PVM_ROOT/lib to your shell
search path (using the above *.stub files).

You may wish to add $PVM_ROOT/man to your MANPATH environment variable,
if it's supported on your system.  This will allow you to easily read
the online manual pages.


STARTING AND STOPPING PVM

To start PVM, run $PVM_ROOT/lib/pvm.  This starts the console task,
which in turn starts a pvmd if one is not already running.  More hosts
can be started and added to your "virtual machine" by using the console
"add" command.

To start the pvmd without starting the console, you can also run the
$PVM_ROOT/lib/pvmd directly.  A number of hosts can all be started at
once by supplying the pvmd with a host file, as in:

	$PVM_ROOT/lib/pvmd my_hosts

where "my_hosts" contains the names of the hosts you wish to add,
one host per line.  See the pvmd man page for other host file
options.

To stop PVM, use the PVM console command "halt".  From within your
user programs, you can use the pvm_halt() function.  You can also
kill the pvmd3 process (always use a catchable signal such as
SIGTERM).  But, if you do kill the pvmd, or if it fails for some
other reason, always be sure to remove any leftover /tmp/pvmd.<uid>
pvmd socket files, where <uid> is your numerical user id.  These
files will make PVM think a pvmd is running, and can cause the
dreaded "Can't Start Pvmd" message.

For more information about the console commands, see the console "help"
function or the console man page.


TROUBLESHOOTING

If you ever have trouble starting PVM or adding a new host to your
virtual machine, verify that there are no leftover /tmp/pvmd.<uid>
daemon socket files on the machines where you are trying to start
PVM (as described above) and then check the local /tmp/pvml.<uid>
log file for any error messages which may help you to determine
the problem.

A common problem is caused by restricted access to a remote machine
via "rsh".  PVM uses "rsh" to start the pvmd on a remote host.  If
you cannot do this:

	% rsh remote_host 'echo $PVM_ROOT'

and successfully get back the correct value of $PVM_ROOT on that
remote host, without typing your password, then that is the problem.
You will need to set up permissions on the remote host to allow rsh
access without a password.  On Unix systems, this is accomplished
by creating a $HOME/.rhosts file on the *remote* machine that
provides access to your *local* machine.  (Note: the $HOME/.rhosts
file is *NOT* a PVM host file...)  The format of a $HOME/.rhosts
file is as follows:

	your_host_1  your_login_on_host_1
	your_host_2  your_login_on_host_2
	your_host_3  your_login_on_host_3
	. . .

If you get really stuck, try checking the online FAQ off of the
PVM Home Page:

 http://www.netlib.org/pvm3/book/node23.html#SECTION00450000000000000000


APPLICATION PROGRAMS

C, C++ and Fortran programs must be linked with the main PVM library,
$PVM_ROOT/lib/$PVM_ARCH/libpvm3.a, and Fortran programs must also be
linked with the $PVM_ROOT/lib/$PVM_ARCH/libfpvm3.a library file.
User program source files should include the $PVM_ROOT/include/pvm3.h
header file for C/C++ programs, to define PVM constants and function
prototypes.  The corresponding Fortran header file is
$PVM_ROOT/include/fpvm3.h.

Executables should be installed in $PVM_ROOT/bin/$PVM_ARCH for a
user installation, and in $HOME/pvm3/bin/$PVM_ARCH for a system-wide
PVM installation (where the user may not be able to write to the
$PVM_ROOT/bin/$PVM_ARCH directory).  This default execution path
can be changed; see the "ep=" option on the pvmd man page.

When user programs are spawned by PVM, by default they execute in the
$HOME directory of the user.  Any input or data files should therefore
reside in or be linked to $HOME.  This default working directory
can be changed; see the "wd=" option on the pvmd man page.

CONTACT

The PVM web home page is at

    http://www.epm.ornl.gov/pvm/pvm_home.html .

A newsgroup, comp.parallel.pvm, exists for discussions about PVM
and help with specific problems.

Please direct any e-mail (questions, bugs, bug fixes, etc.) to:

    pvm@msr.EPM.ORNL.GOV.

To report bugs or problems with PVM, please see the file

    $PVM_ROOT/doc/bugreport .

________________________________________________________________________

Sincerely,
The PVM research group

