PVM, pvm_intro - Parallel Virtual Machine System Version 3
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 (libpvm3.a and libfpvm3.a).
Daemon programs (pvmd3) provide communication and process
control between computers.
In the PVM system, machines are assigned a short string to
identify their architectures (this includes operating system type as well as
CPU type). The types currently predefined in the distribution are:
The following environment variables are read by PVM and may be set
in order to customize your PVM environment. To set them, you can add
commands to your .cshrc or .profile or equivalent shell
startup file. See the manual page for the shell you normally use for
information about how to do this. You can also include an appropriate shell
startup file stub to set 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.
For csh users: Note that setting them in .login does
not have the same effect. The .login script file is only read when you are
actually logging in, whereas .cshrc is read every time csh starts up. PVM
needs to have environment variables set when it starts a slave pvmd with
"rsh host pvmd ...", so they must be set in .cshrc.
For those using a shell that doesn't always read a startup script
(e.g. sh, ksh), there is another way to set environment
variables for PVM. Before running the PVM executables, the pvm and
pvmd startup scripts source any commands in $HOME/.pvmprofile
if this file exists.
The following environment variables are supported by PVM
3.4.4:
- PVM_ROOT
- The path where PVM libraries and system programs are installed, for
example /usr/local/pvm3 or $HOME/pvm3. This variable must be set on each
host where PVM is used in order for PVM to function. There is no default
value.
- PVM_TMP
- The path for PVM temporary files, such as the daemon socket file
pvmd.<uid> and the log file pvml.<uid>. Use this environment
variable to use a directory other than /tmp (or C:\TEMP on Win32), or to
introduce added security by using a protected subdirectory in /tmp that is
owned by your userid and cannot be easily corrupted.
- PVM_RSH
- The path to the "rsh" program on your system, if different than
that defined in the $PVM_ROOT/conf/$PVM_ARCH.def configuration file. This
environment variable can also be used to replace "rsh" with
"ssh" for added security.
- PVM_PATH
- The execution path to be searched for PVM programs on your system. By
default, PVM looks in $HOME/pvm3/bin/$PVM_ARCH and $PVM_ROOT/bin/$PVM_ARCH
for your PVM applications. This environment variable does not
override the ep= host file option.
- PVM_WD
- The working directory for spawned PVM programs on your system. By default,
PVM spawns your PVM applications in $HOME, but for convenience in
accessing data or input files using relative path names, an alternate
working directory can be specified. This environment variable does
not override the wd= host file option.
- PVM_EXPORT
- Names of environment variables to export from a parent task to children
tasks through pvm_spawn(). Multiple names must be separated by ':'.
If PVM_EXPORT is not set, no environment is exported.
- PVM_DEBUGGER
- The debugger script to use when pvm_spawn() is called with
PvmTaskDebug set. The default is $PVM_ROOT/lib/debugger.
- PVM_DPATH
- The path of the pvmd startup script (default is $PVM_ROOT/lib/pvmd). It is
overridden by host file option dx=.
This variable is useful if you use a shell that doesn't
automatically execute a startup script (such as .cshrc) to allow setting
PVM_ROOT on slave (added) hosts. If you set it to the absolute or
relative path of the pvmd startup script (for example
/usr/local/pvm3/lib/pvmd or pvm3/lib/pvmd), the script will
automatically set PVM_ROOT. Note that for this to work, you must set it
to run the pvmd script, not the pvmd3 executable itself.
- PVM_WINDPATH
- This variable serves the same purpose as the PVM_DPATH above, but
specifically for Win32 systems. This second environment variable allows
for alternate specification of the path to the pvmd3.exe daemon executable
using appropriate DOS file path syntax and environment variables (e.g.
%PVM_ROOT%\lib\WIN32\pvmd3.exe).
- PVMHOSTFILE
- Specifies the path to an optional host file to be used by default when
starting PVM. This alleviates the need to manually pass a host file path
argument to the "pvm" console or "pvmd" script when
starting PVM.
- PVMDLOGMAX
- Sets the maximum length of the pvmd error log file. Default value is the
PVMDLOGMAX parameter in the source, 1 Mbyte.
- PVMDDEBUG
- Sets the default pvmd debugging mask (as does the pvmd -d option). Value
can be in hexadecimal (0x...), octal (0...) or decimal. Used to debug the
pvmd (not intended to be used to debug application programs).
- PVMTASKDEBUG
- Sets the default libpvm debugging mask (as does pvm_setopt(PvmDebugMask,
x)). Value can be in hexadecimal (0x...), octal (0...) or decimal. Used to
debug libpvm (not intended to be used to debug application programs).
- PVMTASK
- Sets additional flag bits for the pvm_spawn() library call. Allows
override at run time of flags compiled into the pvm_spawn() calls in PVM
application, e.g. to turn on PvmTaskDebug for popping up child tasks in a
debugger window.
- PVMBUFSIZE
- Sets the size of the shared memory buffers used by libpvm and the pvmd.
The default value is 1048576. If your program composes messages longer
than this size, you must increase it.
- PVM_VMID
- A new feature in PVM 3.4.4 is the concept of a "Virtual Machine
ID". You can now set the PVM_VMID environment variable to an
arbitrary string (or use the "id=" option in a host file, see
man page for pvmd3), and this will distinguish and allow multiple virtual
machines to run on the same set of hosts under the same userid. (This
feature was originally introduced by SGI in their commercial PVM product,
and has now been generalized for the public PVM system.) This feature
seems to be something that people often want, and the PVM_VMID is the
cleanest way to provide this functionality, rather than overloading the
SHAREDTMP compiler flag and other internals.
Setting the PVM_VMID environment variable before starting PVM
will create an encapsulated virtual machine with the given VMID name. By
default, all other hosts which are added to this virtual machine will
inherit the same VMID. If hosts are added to the virtual machine which
are running older versions of PVM (prior to 3.4.4), then the VMID will
be ignored for those hosts, and hence these machines can only be added
to one virtual machine for the given user. The VMID need not be
consistent on every host in a virtual machine (although this is not
necessarily advisable), and the VMID can be set for individual hosts
using the "id=" host file option (see man page for pvmd3).
The following environment variables are used by PVM internally.
With the exception of PVM_ARCH, their values should not be modified. This is
for information only.
- PVM_ARCH
- The PVM architecture name of the host on which it is set, used to
distinguish between machines with different executable (a.out) formats.
Copies of a program for different architectures are installed in parallel
directories named for PVM architectures.
- PVMSOCK
- Is passed from pvmd to spawned task, and gives the address of the pvmd
local socket.
- PVMEPID
- Holds the expected process id of a spawned task exec'd by the pvmd. This
is a magic cookie used by the task to identify itself when reconnecting to
the pvmd, in order to get the correct task slot.
- PVMTMASK
- The libpvm trace mask, passed from the pvmd to spawned tasks.
- PVMTRCBUF
- The libpvm trace buffer size. If specified determines the number of bytes
of trace event message buffer to be collected before sending to front-end
tracer program.
- PVMTRCOPT
- The libpvm trace option setting. Determines the level of tracing to be
performed on invocations of PVM library calls.
- PVMINPLACEDELAY
- Used to optimize sending of PvmDataInPlace messages on MPP systems.
- PVMKEY
- PVM uses this value, combined with the process id, to generate
shared-memory segment keys. The default value is your numeric uid. PVM
automatically detects collisions when generating a key and picks a new
key, so it should almost never need to be set explicitly.
A. L. Beguelin [4,5], J. J. Dongarra [1,2], G. A. Geist [2], W. C.
Jiang [1], R. J. Manchek [1], B. K. Moore [1], V. S. Sunderam [3]
1. University of Tennessee, Knoxville TN.
2. Oak Ridge National Laboratory, Oak Ridge TN.
3. Emory University, Atlanta GA.
4. Carnegie Mellon University, Pittsburgh PA
5. Pittsburgh Supercomputer Center, Pittsburgh PA