Next: Research Program Up: Introduction Previous: Introduction
The Basic Problems
- 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.
- 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.
- 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.
- 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