PVM_INTRO(1PVM) PVM Version 3.4 PVM_INTRO(1PVM)
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 computa-
The individual computers may be shared- or local-memory multiproces-
sors, 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
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:
AFX8 Alliant FX/8
ALPHA DEC Alpha/OSF-1
ALPHAMP DEC Alpha/OSF-1 / using shared memory
AIX46K IBM/RS6000 / AIX 4.x
AIX4MP IBM SMP / shared memory transport / AIX 4.x
AIX4SP2 IBM SP-2 / using MPI / AIX 4.x
APOLLO HP 300 running Domain/OS
ATT AT&T/NCR 3600 running SysVR4
BAL Sequent Balance
BFLY BBN Butterfly TC2000
BSD386 8086 running BSDI or BSD386
CM2 Thinking Machines CM-2 Sun front-end
CM5 Thinking Machines CM-5
CNVX Convex using IEEE floating-point
CNVXN Convex using native f.p.
CRAYSMP Cray S-MP
CSPP Convex Exemplar
CYGWIN POSIX emulation layer on top of Windows32
DGAV,DGIX Data General Aviion
E88K Encore 88000
FREEBSD 8086 running FreeBSD
HP300 HP 9000 68000 cpu
HPPA HP 9000 PA-Risc
HPPAMP HP 9000 PA-Risc / shared memory transport
KSR1 Kendall Square
I860 Intel RX Hypercube
IPSC2 Intel IPSC/2
LINUX 8086 running Linux
LINUXALPHA DEC Alpha running Linux
LINUXARM Strogarm running Linux
LINUXHPPA HP 9000 running Linux
LINUXPPC PowerPC running Linux
LINUXSPARC Sparc running Linux
M88K Motorola M88100 running Real/IX
M88K Motorola M88100 running Real/IX
NETBSDALPHA DEC Alpha running NetBSD
NETBSDAMIGA Amiga running NetBSD
NETBSDARM32 Strongarm running NetBSD
NETBSDHP300 HP 300 running NetBSD
NETBSDI386 8086 running NetBSD
NETBSDM68K Any Motorola 68K running NetBSD
NETBSDMAC68K Macintosh running NetBSD
NETBSDMIPSEB Mips EB running NetBSD
NETBSDMIPSEL Mips EL running NetBSD
NETBSDNS32K NS32K running NetBSD
NETBSDPMAX DEC Pmax running NetBSD
NETBSDPOWERPC PowerPC running NetBSD
NETBSDSH3 SH3 running NetBSD
NETBSDSPARC Sparc running NetBSD
NETBSDSPARC64 Sparc64 running NetBSD
NETBSDSUN3 SUN 3 running NetBSD
NETBSDVAX Vax running NetBSD
PGON Intel Paragon
PMAX DEC/Mips arch (3100, 5000, etc.)
RS6K IBM/RS6000 / AIX 3.x
RS6KMP IBM SMP / shared memory transport / AIX 3.x
SCO 8086 running SCO Unix
SGI Silicon Graphics IRIS
SGI5 Silicon Graphics IRIS running OS 5.0
SGI6 Silicon Graphics IRIS running OS >= 6.0
SGI64 Silicon Graphics IRIS running 64 bit
SGIMP Silicon Graphics IRIS / OS 5.x / using shared mem-
SGIMP6 Silicon Graphics IRIS / OS 6.x / using shared mem-
SGIMP64 Silicon Graphics IRIS / 64 bit / using shared mem-
SP2MPI IBM SP-2 / using MPI / AIX 3.x
SUN3 Sun 3
SUN4 Sun 4, 4c, sparc, etc.
SUN4SOL2 Sun 4 running Solaris 2.x
SUNMP Sun 4 / using shared memory / Solaris 2.x
SX3 NEC SX-3
SYMM Sequent Symmetry
TITN Stardent Titan
U370 IBM 3090 running AIX
UTS2 Amdahl running UTS
UXPM Fujitsu running UXP/M
VCM2 Thinking Machines CM-2 Vax front-end
WIN32 Windows 95/98/NT
X86SOL2 8086 running Solaris 2.x
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 com-
mands 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 log-
ging 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:
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 func-
tion. There is no default value.
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 sub-
directory in /tmp that is owned by your userid and cannot be
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.
The execution path to be searched for PVM programs on your sys-
tem. By default, PVM looks in $HOME/pvm3/bin/$PVM_ARCH and
$PVM_ROOT/bin/$PVM_ARCH for your PVM applications. This envi-
ronment 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.
Names of environment variables to export from a parent task to
children tasks through pvm_spawn(). Multiple names must be sep-
arated by ’:’. If PVM_EXPORT is not set, no environment is
The debugger script to use when pvm_spawn() is called with Pvm-
TaskDebug set. The default is $PVM_ROOT/lib/debugger.
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 automat-
ically execute a startup script (such as .cshrc) to allow set-
ting PVM_ROOT on slave (added) hosts. If you set it to the
absolute or relative path of the pvmd startup script (for exam-
ple /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
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 syn-
tax and environment variables (e.g.
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.
Sets the maximum length of the pvmd error log file. Default
value is the PVMDLOGMAX parameter in the source, 1 Mbyte.
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).
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).
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 PvmTaskDe-
bug for popping up child tasks in a debugger window.
Sets the size of the shared memory buffers used by libpvm and
the pvmd. The default value is 1048576. If your program com-
poses messages longer than this size, you must increase it.
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 multi-
ple 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 pro-
vide 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 vir-
tual 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 necessar-
ily 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.
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 architec-
tures are installed in parallel directories named for PVM archi-
Is passed from pvmd to spawned task, and gives the address of
the pvmd local socket.
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 cor-
rect task slot.
The libpvm trace mask, passed from the pvmd to spawned tasks.
The libpvm trace buffer size. If specified determines the num-
ber of bytes of trace event message buffer to be collected
before sending to front-end tracer program.
The libpvm trace option setting. Determines the level of trac-
ing to be performed on invocations of PVM library calls.
Used to optimize sending of PvmDataInPlace messages on MPP sys-
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
aimk(1PVM), pvm(1PVM), pvmd3(1PVM), PVM 3.3 User’s Guide and Reference
A. L. Beguelin [4,5], J. J. Dongarra [1,2], G. A. Geist , W. C.
Jiang , R. J. Manchek , B. K. Moore , V. S. Sunderam 
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
11 April, 1995 PVM_INTRO(1PVM)
Man(1) output converted with