This appendix contains a list of all the versions of PVM that have been released from the first one in February 1991 through August 1994. Along with each version we include a brief synopsis of the improvements made in this version. Although not listed here, new ports were being added to PVM with each release. PVM continues to evolve driven by new technology and user feedback. Newer versions of PVM beyond those listed here may exist at the time of reading. The latest version can always be found on netlib.
PVM 1.0 (never released) any of the several initial experimental PVM versions used to study heterogeneous distributed computing issues. PVM 2.0 (Feb. 1991) + Complete rewrite of in-house experimental PVM software (v1.0), + cleaned up the specification and implementation to improve robustness and portablility. PVM 2.1 (Mar. 1991) + process-process messages switched to XDR to improve protability of source in heterogeneous environments. + Simple console interpreter added to master pvmd. PVM 2.2 (April 1991) + pvmd-pvmd message format switched to XDR. + Get and put functions vectorized to improve performance. + broadcast function --> deprecated PVM 2.3.2 (June 1991) + improved password-less startup via rsh/rcmd + added per-host options to hostfile format: ask for password specify alternate loginname specify alternate pvmd executable location + pvmd-pvmd protocol version checked to prevent mixed versions interoperating. + added support for short and long integers in messages. + added 'reset' pvmd command to reset the vm. + can specify "." as host to initiateM() to create on localhost PVM 2.3.3 (July 1991) + added 'barr' command to check barrier/ready status + pstatus() libpvm call added to return size of virtual machine PVM 2.3.4 (Oct. 1991) + pvmds negotiate maximum UDP message length at startup. + removed static limitation on number of hosts (used to be 40). PVM 2.4.0 (Feb. 1992) + added direct-connect TCP message transfer available through vsnd() and vrcv() to improve communication performance. + added option to specify user executable path on each host. + version check added between pvmd and libpvm to prevent running incompatible versions. + libpvm automatically prints error messages. + libpvm error codes standardized and exported in "pvmuser.h". + includes instrumented heap to aid system debugging. + host file default parameters can be set with '*'. + libpvm returns error code instead of exiting in case of fatal error. PVM 2.4.1 (June 1992) + added new ports and bug fixes PVM 2.4.2 (Dec. 1992) + pvmuser.h made compatible with C++. + can force messages to be packed in raw data format to avoid XDR. + rcv() will return BadMsg if message can't be decoded. PVM 3.0 (Feb. 1993) Complete redesign of PVM software both the user interface and the implementation in order to: + allow scalability to hundreds of hosts. + allow portability to multiprocessors / operating systems other than Unix. + allows dynamic reconfiguration of the virtual machine, + allows fault tolerance + allows asynchronous task notification - task exit, machine reconfiguration. + includes dynamic process groups, + separate PVM console task. PVM 3.1 (April 1993) + added task-task direct routing via TCP using normal send and receive calls. PVM 3.1.1 (May 1993) Five bug fix patches released for PVM 3.1 PVM 3.1.2 (May 1993) PVM 3.1.3 (June 1993) PVM 3.1.4 (July 1993) PVM 3.1.5 (Aug. 1993) PVM 3.2 (Aug. 1993) + distributed memory ports merged with Unix port source. Ports include I860, PGON, CM5. + conf/ARCH.def files created for per-machine configuration to improve source portability and package size. + pvmd adds new slave hosts in parallel to improve performance. + stdout and stderr from tasks can be redirected to a task/console. + option OVERLOADHOST allows virtual machines running under the same login to overlap i.e. user can have multiple overlapping vm. + new printf-like pack and unpack routines pvm_packf() and pvm_unpackf() available to C and C++ programmers. + added pack, unpack routines for unsigned integers. + environment passed through spawn(), controlled by variable PVM_EXPORT. + many enhancements and features added to PVM console program. + pvmd and libpvm use PVM_ROOT and PVM_ARCH environment variables if set. PVM 3.2.1 (Sept. 1993) Six bug fix patches released for PVM 3.2 PVM 3.2.2 (Sept. 1993) PVM 3.2.3 (Oct. 1993) PVM 3.2.4 (Nov. 1993) PVM 3.2.5 (Dec. 1993) PVM 3.2.6 (Jan. 1994) PVM 3.3.0 (June 1994) + PVM_ROOT environment variable now must be set. $HOME/pvm3 is no longer assumed. + shared-memory ports merged with Unix and distributed memory ports. Ports include SUNMP and SGIMP. + New functions pvm_psend() and pvm_precv() send and receive raw data buffers, enabling more efficient implementation on machines such as multiprocessors. + new function pvm_trecv() blocks until a message is received or a specified timeout (in seconds and usec) improves fault tolerance. + Inplace packing implemented for dense data reducing packing costs. + Resource Manager, Hoster and Tasker interfaces defined to allow third party debuggers and resource managers to use PVM. + libpvm parameter/result tracing implemented to drive XPVM tool. tasks inherit trace destination and per-call event mask. + XPVM, a graphical user interface for PVM, is released. + added collective communication routines to group library. global reduce and scatter/gather + libpvm function pvm_catchout() collects output of children tasks. output can be appended to any FILE* (e.g. stdout). + new hostfile option "wd=" sets the working directory of the pvmd. + environment variables expanded when setting ep= or bp= in the hostfile. PVM 3.3.1 (June 1994) bug fix patches for PVM 3.3 PVM 3.3.2 (July 1994) PVM 3.3.3 (August 1994)