PVM Wrapper is a software library that makes it possible for code that utilizes the Parallel Virtual Machine (PVM) software library to run using the message-passing interface (MPI) software library, without needing to rewrite the entire code. PVM and MPI are the two most common software libraries used for applications that involve passing of messages among parallel computers. Since about 1996, MPI has been the de facto standard. Codes written when PVM was popular often feature patterns of {"initsend," "pack," "send"} and {"receive," "unpack"} calls. In many cases, these calls are not contiguous and one set of calls may even exist over multiple subroutines. These characteristics make it difficult to obtain equivalent functionality via a single MPI "send" call. Because PVM Wrapper is written to run with MPI 1.2, some PVM functions are not permitted and must be replaced — a task that requires some programming expertise. The "pvm_spawn" and "pvm_parent" function calls are not replaced, but a programmer can use "mpirun" and knowledge of the ranks of parent and child tasks with supplied macroinstructions to enable execution of codes that use "pvm_spawn" and "pvm_parent."

This program was written by Daniel Katz of Caltech for NASA’s Jet Propulsion Laboratory. This software is available for commercial licensing. Please contact Don Hart of the California Institute of Technology at (818) 393- 3425. Refer to NPO-40232.



This Brief includes a Technical Support Package (TSP).
Document cover
PVM Wrapper

(reference NPO40232) is currently available for download from the TSP library.

Don't have an account?



Magazine cover
NASA Tech Briefs Magazine

This article first appeared in the April, 2004 issue of NASA Tech Briefs Magazine (Vol. 28 No. 4).

Read more articles from the archives here.


Overview

The document discusses the PVM Wrapper, a software library developed by Daniel Katz at NASA's Jet Propulsion Laboratory (JPL) to facilitate the transition of code written for the Parallel Virtual Machine (PVM) to run on systems that utilize the Message Passing Interface (MPI). PVM and MPI are the two predominant libraries for parallel message-passing applications, with MPI becoming the de facto standard since around 1996, while PVM was widely used until 1994.

The PVM Wrapper addresses the challenge of adapting legacy PVM code, which often employs complex patterns of message-passing calls such as “initsend,” “pack,” “send,” “receive,” and “unpack.” These calls can be scattered across multiple subroutines, making it difficult to replace them with a single MPI “send” call. The PVM Wrapper allows developers to link their existing PVM code with this library, enabling it to run on modern computers that support MPI without the need for a complete rewrite of the code.

The library is specifically designed to work with MPI-1.2, which means that some PVM functions are not supported and must be replaced with alternative methods. Notably, the functions “pvm_spawn” and “pvm_parent” are not directly replaced; instead, programmers can utilize “mpirun” along with knowledge of task ranks to manage parent-child task relationships effectively.

The document also includes a notice that the work was conducted under the auspices of NASA and emphasizes that references to specific commercial products or services do not imply endorsement by the U.S. Government or JPL. The PVM Wrapper is available for commercial licensing, and interested parties are directed to contact Don Hart at Caltech for further information.

In summary, the PVM Wrapper serves as a crucial tool for developers looking to modernize their parallel computing applications by transitioning from PVM to MPI, thereby ensuring compatibility with current computing environments while preserving the functionality of their original code. This innovation reflects ongoing efforts in the field of high-performance computing to adapt to evolving standards and technologies.