PVM is the mainstay of the heterogeneous concurrent computing project that, at the time of writing, involves over a dozen researchers and four academic and research institutions. A number of factors, including simplicity of design, the natural and general computing model supported, robustness of implementation, ease of use, high degree of portability, and uncommon levels of support, have contributed to the tremendous popularity of PVM. It is estimated that over 10,000 individuals or installations have retrieved the software, and about 20 to 25% are actively using PVM in their everyday computing, both for experimentation as well as for production quality work. In addition, PVM is increasingly becoming a platform for education and computer science research, as witnessed by the scores of third-party extensions to PVM for load balancing, process migration, profiling, performance optimization, etc.
The PVM system has evolved through three major versions (and numerous patchlevel releases) in the five years it has been in existence, even though the original basic design and computing model has been retained. In this paper, we have described some of the major and significant evolutionary features in PVM, as manifested in release version 3.3 of the system. These enhancements may be categorized as those pertaining to performance, functional enhancements, and auxiliary toolkits. In terms of performance, communication rates - the most critical aspect in network computing - have been significantly improved, to the extent that they are near the achievable maxima for various networks. Further, in response to the increasing prevalence of shared memory multiprocessors, communication optimizations for such machines has resulted in performance levels several times that of previous versions of the system. Other performance improvements are less dramatic though no less important, and represent the results of code analysis and program tuning efforts.
PVM functionality has been greatly improved in version 3.3. Most noteworthy are the new suite of collective communication routines that are required by many application algorithms. The design and implementation of a scheduling interface, as opposed to a hardwired scheduling scheme, enables flexible and optimal scheduling, while achieving a clean separation of mechanism and policy. In terms of auxiliary tools, the latest version of PVM has both a significantly enhanced textual console as well as an integrated graphical interface toolkit. The latter, called XPVM, contains an administrative interface for virtual machine and process management, and also provides tracing and profiling facilities appropriate for operation in a general purpose networked environment. Finally, ongoing efforts of a more investigative and exploratory nature seek to complement system capabilities by providing multi-threading support, parallel I/O facilities, and features to support generalized distributed computing with a view to firmly establishing PVM as the de-facto standard for mainstream parallel and distributed computing.