Next: Research Program Up: Introduction Previous: Introduction

## The Basic Problems

1. Connectivity/Interoperability Problem: Scientific computations involve an increasingly wide range of disparate tools. Problems often involve computations using combinations of numerical subroutine libraries, plotting and graphing packages, geometric modelers, symbolic computing systems and other tools. The engine design scenario discussed in the previous section illustrates the need to combine mathematical computation tools from a wide range of disciplines.

While some systems try to serve as comprehensive platforms for mathematical computation, they have not been sufficiently flexible to be satisfactory. In particular, no tool has a sufficiently expandable type system to deal with foreign mathematical objects. Those tools that have some provision for collaboration with other tools expect to be the master of the environment, not an equal with other tools. Finally, the semantics of the tools themselves is not specified precisely enough to support automated inter-operation.

2. Code Creation Problem: Packages are not always appropriate for solving computationally intensive scientific problems. For example, Matlab is extremely effective for certain problems like singular value decompositions, but it is not so appropriate for finite element stiffness matrix assembly, which involves a fair amount of pointer-chasing. In these cases, we must resort to a general purpose programming language such as Fortran or C and take advantage of subroutine libraries to minimize the coding required.

However, many aspects of creating mathematical software are not well captured by subroutine libraries. An example arises when coding iterative solvers for sparse matrices. An iterative solver typically requires some information about the underlying matrix A, such as matrix-vector products of the form Ax or , or information about the diagonal entries of A (to construct a preconditioner). There are many different such iterative solvers [7], and there are also many different formats for representing sparse matrices [42]. It is difficult to code an efficient, modular iterative linear equation solving routine in Fortran or C that encapsulates the sparse matrix representation separately from the iterative method itself. Nonetheless, this type of modularization is very desirable to preserve the generality of the Fortran or C program. This encapsulation problem is exacerbated when working with parallel computers. It would be better to develop a transformation that starts from a separate specification of the iterative method and a specification of the sparse matrix representation and produces Fortran or C code.

We expect a dramatic increase in software productivity when scientists and engineers generate Fortran or C code for sequential and parallel computers by taking advantage of both libraries of subroutines and libraries of high level mathematical program transformations. The transformational approach allows preservation of encapsulation and allows generality as the program is developed.

3. Explanation problem: Sharing code with colleagues is difficult because there is no common language for explaining what programs do and precisely giving the conditions necessary to apply them. We need some assurance that the modules provided actually do meet the specifications provided. This assurance can be achieved either by verifying the code meets the indicated specification or by deriving aspects of the specification directly from the code. We call the combination of creating the specification and assurance of the specification the explanation problem.

4. Sharing/Mathematical Database Opportunity: Once tools can inter-operate, mathematical models can be shared and all aspects of mathematical study can be accessible to computation, a new opportunity arises. It is then possible to create collections of mathematical theorems, explanations, examples and counterexamples. When properly indexed, annotated and linked such databases can capture an important part of mathematical knowledge that is at best poorly captured via books and journals.

The resolution of these problems, coupled with the rapid technological advances in computer hardware, communications and software will allow us to create a truly collaborative environment---one in which both people and software tools can work together.

It is partially through these experiences that we have come to recognize the three main problems discussed above. The following sections describe occurrences of these problems more concretely.

Next: Research Program Up: Introduction Previous: Introduction

nuprl project
Tue Nov 21 08:50:14 EST 1995

Website feedback
PRL Project   |   Computer Science Department   |   Cornell University
nuprl@cs.cornell.edu   |   320 Gates Hall, Ithaca, NY 14853   |   © 2014 Cornell University
site admin | Prof Constable's Library | PRL SourceForge Project Page