PVM_INTRO(1PVM)
π PVM_INTRO π (1PVM) β PVM Version 3.4
okay bestie, sit down, hydrate, because we're about to get into the Parallel Virtual Machine and honestly? it's giving legendary. this is the intro page for PVM and pvm_intro, aka Parallel Virtual Machine System Version 3 π
β¨ NAME β¨
PVM, pvm_intro β Parallel Virtual Machine System Version 3 π¦
πΈ DESCRIPTION πΈ
so. PVM is a software system that lets a whole collection of heterogeneous computers get used as one coherent and flexible concurrent computational resource. no cap. it's a glow-up for your cluster π
the individual computers can literally be anything:
- shared-memory or local-memory multiprocessors
- vector supercomputers
- specialized graphics engines
- scalar workstations
β¦and they might be interconnected by a variety of networks, like ethernet, FDDI. it's giving "everyone's invited to the party" π
user programs written in C, C++ or Fortran access PVM through library routines (libpvm3.a and libfpvm3.a). yes those are the exact names, write them down, they're important π
and the daemon programs (pvmd3) provide communication and process control between computers. they're the main characters holding the whole group chat together fr fr π«Ά
π MACHINE ARCHITECTURE π
in the PVM system, machines get assigned a short string to identify their architectures β and by architecture we mean operating system type as well as CPU type. slay, specificity π
the types currently predefined in the distribution are:
AFX8β Alliant FX/8ALPHAβ DEC Alpha/OSF-1ALPHAMPβ DEC Alpha/OSF-1 / using shared memoryAIX46Kβ IBM/RS6000 / AIX 4.xAIX4MPβ IBM SMP / shared memory transport / AIX 4.xAIX4SP2β IBM SP-2 / using MPI / AIX 4.xAPOLLOβ HP 300 running Domain/OSATTβ AT&T/NCR 3600 running SysVR4BALβ Sequent BalanceBFLYβ BBN Butterfly TC2000BSD386β 80[345]86 running BSDI or BSD386CM2β Thinking Machines CM-2 Sun front-endCM5β Thinking Machines CM-5CNVXβ Convex using IEEE floating-pointCNVXNβ Convex using native f.p.CRAYβ CrayCRAY2β Cray-2CRAYSMPβ Cray S-MPCSPPβ Convex ExemplarCYGWINβ POSIX emulation layer on top of Windows32DGAV,DGIXβ Data General AviionE88Kβ Encore 88000FREEBSDβ 80[345]86 running FreeBSDHP300β HP 9000 68000 cpuHPPAβ HP 9000 PA-RiscHPPAMPβ HP 9000 PA-Risc / shared memory transportKSR1β Kendall SquareI860β Intel RX HypercubeIPSC2β Intel IPSC/2LINUXβ 80[345]86 running LinuxLINUXALPHAβ DEC Alpha running LinuxLINUXARMβ Strogarm running LinuxLINUXHPPAβ HP 9000 running LinuxLINUXPPCβ PowerPC running LinuxLINUXSPARCβ Sparc running LinuxM88Kβ Motorola M88100 running Real/IXM88Kβ Motorola M88100 running Real/IXMASPARβ MasparMIPSβ MipsNETBSDALPHAβ DEC Alpha running NetBSDNETBSDAMIGAβ Amiga running NetBSDNETBSDARM32β Strongarm running NetBSDNETBSDHP300β HP 300 running NetBSDNETBSDI386β 80[345]86 running NetBSDNETBSDM68Kβ Any Motorola 68K running NetBSDNETBSDMAC68Kβ Macintosh running NetBSDNETBSDMIPSEBβ Mips EB running NetBSDNETBSDMIPSELβ Mips EL running NetBSDNETBSDNS32Kβ NS32K running NetBSDNETBSDPMAXβ DEC Pmax running NetBSDNETBSDPOWERPCβ PowerPC running NetBSDNETBSDSH3β SH3 running NetBSDNETBSDSPARCβ Sparc running NetBSDNETBSDSPARC64β Sparc64 running NetBSDNETBSDSUN3β SUN 3 running NetBSDNETBSDVAXβ Vax running NetBSDNEXTβ NeXTOS2β OS/2PGONβ Intel ParagonPMAXβ DEC/Mips arch (3100, 5000, etc.)RS6Kβ IBM/RS6000 / AIX 3.xRS6KMPβ IBM SMP / shared memory transport / AIX 3.xRTβ IBM/RTSCOβ 80[345]86 running SCO UnixSGIβ Silicon Graphics IRISSGI5β Silicon Graphics IRIS running OS 5.0SGI6β Silicon Graphics IRIS running OS >= 6.0SGI64β Silicon Graphics IRIS running 64 bitSGIMPβ Silicon Graphics IRIS / OS 5.x / using shared memorySGIMP6β Silicon Graphics IRIS / OS 6.x / using shared memorySGIMP64β Silicon Graphics IRIS / 64 bit / using shared memorySP2MPIβ IBM SP-2 / using MPI / AIX 3.xSUN3β Sun 3SUN4β Sun 4, 4c, sparc, etc.SUN4SOL2β Sun 4 running Solaris 2.xSUNMPβ Sun 4 / using shared memory / Solaris 2.xSX3β NEC SX-3SYMMβ Sequent SymmetryTITNβ Stardent TitanU370β IBM 3090 running AIXUTS2β Amdahl running UTSUVAXβ DEC/MicrovaxUWAREβ UwareUXPMβ Fujitsu running UXP/MVCM2β Thinking Machines CM-2 Vax front-endWIN32β Windows 95/98/NTX86SOL2β 80[345]86 running Solaris 2.x
not me spotting M88K twice in this list π Motorola M88100 running Real/IX, listed two separate times, and we are keeping both because that is literally what the page says. periodt π
πΈ ENVIRONMENT VARIABLES πΈ
okay bestie so PVM reads these little env vars and you can set them to make your PVM life β¨customizedβ¨. to set them, you just add commands to your .cshrc or .profile or whatever shell startup file you vibe with. want to know how to do that? go read the man page for whatever shell you actually use, it's giving "look it up".
you can also drop in an appropriate shell startup file stub that sets your PVM env vars and adds PVM dirs to your execution path. like, insert 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. order matters bestie π«Ά
for csh girlies: setting them in.loginis NOT the same vibe, okay?.loginis only read when you're actually logging in, but.cshrcis read every single time csh starts up. and PVM needs those env vars set when it starts a slavepvmdwithrsh host pvmd ...β so they have to live in.cshrc. periodt.
and for those of you on a shell that doesn't always read a startup script (looking at you, sh and ksh), there's another way. before running the PVM executables, the pvm and pvmd startup scripts source any commands in $HOME/.pvmprofile if that file exists. sneaky but iconic π
so here's the lineup β these are the environment variables supported by PVM 3.4.4:
PVM_ROOTβ the path where PVM libraries and system programs are installed, like/usr/local/pvm3or$HOME/pvm3. this one is mandatory, like it must be set on each host where PVM is used for PVM to function at all. there is no default value. none. zero. set it. π₯PVM_TMPβ the path for PVM temporary files, such as the daemon socket filepvmd.<uid>and the log filepvml.<uid>. use this to point at a directory other than/tmp(orC:\TEMPon Win32), or to add security by using a protected subdirectory in/tmpthat's owned by your userid and can't be easily corrupted. lowkey a glow-up for your security πPVM_RSHβ the path to the"rsh"program on your system, if it's different from whatever's defined in the$PVM_ROOT/conf/$PVM_ARCH.defconfiguration file. you can also use this to swap"rsh"out for"ssh"for added security. bestie, ssh is the moment π¦PVM_PATHβ the execution path that gets searched for PVM programs on your system. by default PVM looks in$HOME/pvm3/bin/$PVM_ARCHand$PVM_ROOT/bin/$PVM_ARCHfor your PVM applications. heads up though: this does not override theep=host file option. no cap.PVM_WDβ the working directory for spawned PVM programs on your system. by default PVM spawns your PVM applications in$HOME, but for the convenience of accessing data or input files with relative path names, you can specify an alternate working directory. and yes, this does not override thewd=host file option either.PVM_EXPORTβ names of environment variables to export from a parent task to children tasks throughpvm_spawn(). multiple names must be separated by':'. ifPVM_EXPORTisn't set, no environment is exported. simple as that β¨PVM_DEBUGGERβ the debugger script to use whenpvm_spawn()is called withPvmTaskDebugset. the default is$PVM_ROOT/lib/debugger.PVM_DPATHβ the path of thepvmdstartup script (default is$PVM_ROOT/lib/pvmd). it gets overridden by the host file optiondx=.
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 thepvmdscript, not thepvmd3executable itself. not me making that mistake so you don't have to π
PVM_WINDPATHβ does the exact same job asPVM_DPATHabove, but specifically for Win32 systems. this second env var lets you alternatively specify the path to thepvmd3.exedaemon executable using appropriate DOS file path syntax and environment variables (e.g.%PVM_ROOT%\lib\WIN32\pvmd3.exe). windows besties we see you π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. lazy-girl-friendly, we love to see it πPVMDLOGMAXβ sets the maximum length of thepvmderror log file. default value is thePVMDLOGMAXparameter in the source,1 Mbyte.PVMDDEBUGβ sets the defaultpvmddebugging mask (just like thepvmd -doption does). value can be in hexadecimal (0x...), octal (0...) or decimal. used to debug thepvmd(not intended to be used to debug application programs). read that again bestie.PVMTASKDEBUGβ sets the defaultlibpvmdebugging mask (just likepvm_setopt(PvmDebugMask, x)). value can be in hexadecimal (0x...), octal (0...) or decimal. used to debuglibpvm(again, not intended to be used to debug application programs).PVMTASKβ sets additional flag bits for thepvm_spawn()library call. allows override at run time of flags compiled into thepvm_spawn()calls in your PVM application, e.g. to turn onPvmTaskDebugfor popping up child tasks in a debugger window. runtime glow-up β¨PVMBUFSIZEβ sets the size of the shared memory buffers used bylibpvmand thepvmd. the default value is1048576. if your program composes messages longer than this size, you must increase it. no negotiation.PVM_VMIDβ a new feature in PVM 3.4.4: the concept of a "Virtual Machine ID". you can now set thePVM_VMIDenvironment variable to an arbitrary string (or use the"id="option in a host file, see man page forpvmd3), 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 thePVM_VMIDis the cleanest way to provide this functionality, rather than overloading theSHAREDTMPcompiler 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 internal-use-only girlies (do not touch) π
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. like, look but don't touch bestie π
PVM_ARCHβ the PVM architecture name of the host on which it's 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 frompvmdto spawned task, and gives the address of thepvmdlocal socket.PVMEPIDβ holds the expected process id of a spawned taskexec'dby thepvmd. this is a magic cookie used by the task to identify itself when reconnecting to thepvmd, in order to get the correct task slot. πͺPVMTMASKβ thelibpvmtrace mask, passed from thepvmdto spawned tasks.PVMTRCBUFβ thelibpvmtrace 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β thelibpvmtrace option setting. determines the level of tracing to be performed on invocations of PVM library calls.PVMINPLACEDELAYβ used to optimize sending ofPvmDataInPlacemessages 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. she handles herself π
π SEE ALSO π
aimk(1PVM), pvm(1PVM), pvmd3(1PVM), PVM 3.3 User's Guide and Reference Manual
π AUTHORS π
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]
- University of Tennessee, Knoxville TN.
- Oak Ridge National Laboratory, Oak Ridge TN.
- Emory University, Atlanta GA.
- Carnegie Mellon University, Pittsburgh PA
- Pittsburgh Supercomputer Center, Pittsburgh PA
and that's the whole page bestie, you made it to the end!! π this little icon of a document is dated 11 April, 1995, and it lives in PVM_INTRO(1PVM) β the PVM crew really said "let's cook" back in '95 and we're still eating today. go set your PVM_ROOT and slay π
β¨π
π¦ where this page comes from
- debian bookworm: pvm 3.4.6-5
- ubuntu jammy: pvm 3.4.6-3.2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms