Central to the design of PVM was the notion of a \virtual machine" {
a set of heterogeneous hosts connected by a network that appears
logically
to the user as a single large parallel computer. One aspect of the
virtual
machine was how parallel tasks exchanged data. In PVM this was
accomplished
using simple message-passing constructs. There was a strong desire to
keep the
PVM interface simple to use and understand. Portability was considered
much
more important than performance for two reasons: communication across
the
internet was slow; and, the research was focused on problems with
scaling, fault
tolerance, and heterogeneity of the virtual machine.
As the PVM user base grew into the thousands, a conscious e ort was
made to keep the PVM API backwards compatible so that all existing PVM
applications would continue to run unchanged with newer PVM versions.
All
PVM version 2 releases are backwards compatible, as are all PVM
version 3
releases. PVM 3.0 was released in 1993 with a completely new API. The
API
change and new design were required to enable a PVM application to run
across
a virtual machine composed of multiple large multiprocessors.