next up previous
Next: Scientific Packages Up: Problem Specification and Previous: Arbitrary Calling Sequences

Creating a Server

Part of our design objective was to ensure that NetSolve would have an extensive application range. Thus, we wished to be able to add new problems to a computational server. We considered it unacceptable to have the NetSolve administrator modify the NetSolve code itself for each new problem addition.

Two solutions were possible. We could have our server spawn off executables, or we could have it call the numerical software explicitly in its own code. The first solution seems much easier to implement: a computational server could have access to a directory containing all the executables for all the problems. However, this approach, has the following drawbacks. First, maintaining such a directory may not be easy in a distributed file system environment or in the case when some servers want to provide access to only a subset of the set of problems. Second, and more important, such a design requires a stand-alone executable for each problem. Moreover, since most of the numerical softwares likely to be interfaced with NetSolve are actual libraries, it seems redundant to have our computational servers start up an executable calling the library itself. Therefore, we decided to take the second approach and have our servers directly call the underlying software.

We developed a simple tool to handle this code generation for this approach. The input for this tool is a configuration file describing each problem in a formal way; the output is the actual C code for the computational process in charge of the problem solving. Thus, new problems can be added without having to be concerned about the NetSolve internal data structure.

In its first version, this pseudo-compiler still requires some effort from the NetSolve administrator. In fact, since any arbitrary library is supposed to be accessible from NetSolve, we cannot completely free the administrator from code writing. We can, however, provide the administrator with a simple and efficient way of accessing the parameters to the problem. In particular, the function calls to the library have to be written in C, using a predefined set of macros.



next up previous
Next: Scientific Packages Up: Problem Specification and Previous: Arbitrary Calling Sequences



Joint Institute for Computational Science
Mon Apr 29 13:00:40 EDT 1996