The NetSolve project

What is NetSolve ?

NetSolve is a system that allows users to access computational resources, such as hardware and software, distributed across the network. This project has been motivated by the need for an easy-to-use, efficient mechanism for using computational resources remotely. Ease of use is obtained as a result of different interfaces, some of which do not require any programming effort from the user. Good performance is ensured by a load-balancing policy that enables NetSolve to use the computational resource available as efficiently as possible. NetSolve is designed to run on any heterogeneous network and is implemented as a fault-tolerant client-server application.

Description of the Conceptual Model

This figure illustrates the operating model of NetSolve. The model has three components: the client, which can be either a user program or a user interacting with one of the NetSolve interfaces; the NetSolve agent; and the pool of NetSolve resources. The entry point into the NetSolve system is the client sending a problem request to the agent. The agent analyzes this requests to determine which computational resource should be used to solve the problem. The problem and its input data are then sent to the chosen NetSolve resource. The problem is solved by the appropriate scientific package and the result is sent back to the client.


One of the goals of the NetSolve project is to provide the user with various simple ways of accessing the computational resources. That is the reason why we try to develop as many interfaces as possible. We developed a MATLAB interface which allows the user to have access to the computational power of NetSolve while using the MATLAB formalism. There is also a graphic interface using the TK/TCL package which is the simplest of the present NetSolve interfaces. There are also a C and FORTRAN library making it possible for the user to call NetSolve from its programs. We limited these libraries to 2 function calls to make their use as straightforward as possible. We are currently developing a Java interface to make NetSolve accessible via the World Wide Web. This NetSolve interface should be very attractive since it does not require the user to download any code.

Load Balancing and Fault Tolerance

Another important aspect of this project is to solve problems as efficiently as possible. The NetSolve agent is responsible for ensuring efficiency. Indeed, the agent is continuously aware of the configuration of the NetSolve system ( i.e., the number of computational resources available, the problems each resource can solve, the load of each resource and their distance over the network). Based on this information, the agent determines which resource is the most suitable for each request. The agent is the primary participant in the load balancing strategy for NetSolve. Fault-tolerance is an important aspect in distributed systems and it is essential that NetSolve be as robust as possible. Unless every NetSolve resource is proved to be unavailable, the fault-tolerance policy in NetSolve insures that a request will eventually be completed. This allows the system to be flexible. New resources can be added, resources can be removed or fail without affecting the general behavior of the system. Failures are as transparent to the user as possible.

Contacts and support

The NetSolve project is still under intensive development and will undoubtedly undergo many modifications before reaching a stable state. Please, refer to the following paper for more information:

Netsolve : A Network Server for Solving Computational Science problems

Questions and comments can be directed via e-mail to

This project is supported in part by the Applied Mathematical Sciences subprogram of the Office of Energy Research, U.S. Department of Energy, and by the National Science Foundation Science and Technology Center (CRPC).