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.
Interfaces
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
casanova@cs.utk.edu
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).