Linear Algebra is ubiquitous, arising in fields as diverse as Scientific Computing, Machine Learning, Vision, and Information Retrieval. Applying fast algorithms to large problems in these fields represents a difficult engineering effort.  

The Parallel Problems Server (PPServer) is the realization of a novel client-server model for computation on very large matrices. This model admits modularity, portability, and easy extensibility. 

The PPServer includes a powerful communication interface to clients. There is no need to endow clients with communication primitives, or force them to manage data among various processes. 

The PPServer makes it possible to implement full-blown algorithms intended to work on very large problems while still performing the interactive and on-the-fly data manipulation and visualization necessary to maintain the tight development cycle characteristic of research and data exploration.

---


The PPServer is directly extensible via compiled libraries, called packages. The PPServer implements a robust protocol for communicating with packages. Clients (and other packages) may load and remove packages on-the-fly, as well as execute commands within packages.

Each package represents its own  namespace, defining a set of functions and visible function names.  While this supports data encapsulation, it also allows users to hide a subset of  functions in one package by loading another that defines the same names. 

All but a few PPServer commands are implemented as packages, including basic matrix operations.  Many highly optimized public libraries have been realized as packages with appropriate wrapper functions. Finally, packages support common parallel idioms (like applying a function to every element of a matrix), making it easier to add common functionality.

---

Using high performance computers effectively is seldom considered a user-friendly exercise.  Programmers typically have to deal with a multitude of possibly incompatible parallel languages, compilers, and libraries.  This is in sharp contrast to the desktop world where packages such as Maple, Mathematica, and Matlab provide their users with interactive, easy-to-use environments for solving their scientific and engineering problems.  These programs, however, were not written with the needs of the high performance computing community in mind, and so their use is limited to prototyping algorithms or solving very small problems.

This project bridges the gap between scientific computing in the workstation and supercomputer worlds by providing interactive clients with access to powerful functionality and  users of parallel machines access to interactive environments where they can manipulate and visualize large data sets.  

To demonstrate the power of this idea, we use Matlab 5 as the front end to the Parallel Problems Servers computational engine. By using Matlab 5s object oriented programming  features, most server operations are completely transparent.  Combining the Matlab environment with the PPServer, we have been able to build applications for information retrieval, machine learning, and scientific computing.
