lil@mcs.kent.edu
and pwang@mcs.kent.edu
CL-PVM interfaces Common Lisp (CL) systems such as GCL (GNU Common Lisp)
to the popular PVM (Parallel Virtual Machine) system.
The design, implementation and usage of CL-PVM will be presented.
A PVM task uses the PVM library functions to interact with other
tasks: sending and receiving messages, initiating subtasks,
detecting errors, etc. The PVM version 3.0 library is written
in C allowing direct calls from C programs.
There is also a Fortran 77 interface to give
F77 programs access to the PVM library.
The work here adds a Common Lisp interface to enable
Lisp-based system to partake in PVM applications.
A wide variety of useful programs are in Lisp including
symbolic computation systems, expert systems, artificial intelligence
systems, knowledge-based systems, and many more.
With CL-PVM,
a Lisp user can invoke the library routines either
directly from the Lisp top-level or from Lisp programs.
Each PVM host has a
PVM daemon process to support the control and operation of the
virtual machine. Distributed tasks on the PVM utilize PVM protocols to
interact with one another. The C-based PVM library supports the
protocols. Lisp or Fortran processes access
these C routines through appropriate interface functions.
Generally, there is one CL interface function to each
PVM C library function. The CL function calls its C-based counter part
and relays data to the C function. When C functions return the CL functions
translate the data into proper Lisp data object.
This interface is complete and allows Lisp-based programs
take part in a PVM arrangement and thus facilitates the combination of
symbolic, numeric, graphics, and other useful systems.
In addition to discussing the design principles, the implementation
techniques, and typical usages, a complete example of using CL-PVM
to produce graphics of mathematical curves and surfaces will
illustrate the utility of the interface.