Multi-Precision Arithmetic
These ideas come from Dr. David Bailey:
Background
While the standard 64-bit IEEE arithmetic system is adequate for
almost all scientific applications, a small but growing set of
applications requires more. These include the following:
-
Highly sensitive structural analysis eigenvalue/eigenvector
computations. Engineers who do these computations have noticed that
in some recent large examples, it is increasingly difficult to
unambiguously distinguish between a "true" zero and an "approximate"
zero. Somewhat more precision, say double-double, would make this
distinction unequivocal.
-
Climate modeling applications. Climate modeling calculations are
known to be chaotic, with enormous sensitivity to initial conditions
and numerical error. These two effects cannot easily be
distinguished. Further, the numerical sensitivity means that it is
very difficult to reproduce results when calculations are performed on
different systems. The best solution to these difficulties is to
employ double-double arithmetic, at least for certain critical global
summation operations. Details can be found at
http://www.nersc.gov/research/SCG/ocean/NRS.
-
Vortex roll-up simulations. There is no known way to study certain
vortex roll-up phenomena, except by the use of high precision
arithmetic. For one set of parameters, 32-digit arithmetic
(i.e. double-double arithmetic) is required. In a study that further
presses the state-of-the-art in this field, 64- to 80-digit arithmetic
is required.
- Linear algebra computations. A number of recently discovered
linear algebra algorithms have the property that while very efficient,
they require extra precision in order to return results correct to say
the normal 64-bit IEEE precision (15-16 digits). Details can be found
in Jim Demmel's talk, "Recent Progress in High
Accuracy and High Performance Linear Algebra Algorithms".
- Integer relation detection. Given an n-long set of real numbers
(typically given by high-precision floating-point values), the
"integer relation" problem is to find integers ai such that
a1 x1 + a2 x2 + ... +
an xn = 0. Integer relation programs have been
used to discover new formulas of mathematics and physic, including a
new formula for pi, and the identification of constants associated
with certain Feynmann diagrams in quantum field theory. These
calculations require very high precision arithmetic, typically between
100 to 10,000 digit precision. Details can found in the paper "Parallel Integer Relation:
Techniques and Applications".
Project Ideas
There are a number of projects along this line that need to be done,
and would be appropriate for CS267. These include:
- Design and implement a portable double-double
arithmetic package in C++ or Java/Titanium. DHB has a Fortran-90
double-double package, but there is no equivalent in C++ or
Java/Titanium. Such a package would be designed to exploit the
features of IEEE arithmetic that make it possible to obtain
full-accuracy results of arithmetic operations. Such a package would
be useful for a wide variety of applications.
-
Design and implement a portable quad-double arithmetic package,
preferably in Fortran-90 or C++. One would exploit the features of
IEEE arithmetic that make it possible to obtain full-accuracy results
of arithmetic operations. This package would be of use in particular
for the vortex roll-up research mentioned above.
-
Design and implement a new portable arbitrary precision package,
preferably in Fortran-90 or C++. It would be based on the features of
IEEE arithmetic that permit full-accuracy results to be easily
obtained. DHB has an arbitrary precision package, but it was designed
for a more general floating-point arithmetic system, and is not nearly
as efficient as it could be if designed specifically to take advantage
of IEEE arithmetic. Details of DHB's arbitrary precision package can
be found in the article "A Fortran-90 Based Multiprecision System", at
DHB's web site (see above). A full-blown arbitrary precision package
may not be possible in the scope of a CS267 project, but some subset
(say the basic arithmetic routines) would be appropriate.
Final project page,
main CS267 page,
and the
TA's CS267 page
E. Jason Riedy
ejr@cs.berkeley.edu