Abstract:
The future promises teraflops and terabytes in your laptop, petaflops
and petabytes in your supercomputer, and the inability to debug
numerical programs on either. Why can’t they be debugged? What
should we do instead?
It may be worth offering a brief summary, so here is one. (Note: statements of opinion and exhortations in what follows are Prof. Kahan's, not mine.)<p>-- 1 --<p>A very effective way to diagnose some kinds of problem in numerical software is to run it with different settings for floating-point rounding. That way, if you're using an algorithm whose outputs are pathologically sensitive to small variations in their inputs (or in intermediate results), you're likely to be able to tell because the final results will differ by more than a few bits in the lowest places.<p>Unfortunately, support for doing this is lacking in most programming languages and environments. This is a Bad Thing.<p>-- 2 --<p>When doing FP computation that mixes single and double precision, it is tempting to treat mixed-precision operations as single-precision rather than double precision. The latest version of MATLAB (at the time when Kahan gave this talk) does this.<p>This can be very bad, because doing more of the computation than necessary in single precision can produce needlessly inaccurate results and therefore slow down convergence of algorithms (or just plain screw them up).<p>This is also a Bad Thing.<p>-- 3 --<p>Computer architectures, languages and programming environments should be designed so that following the path of least resistance leads to good, not bad, numerical behaviour. Lots of more detailed proposals along these lines can be found on Kahan's web pages.<p>Making this happen is a big job. Kahan is likely to be dead before it's finished. So go and make it happen.
For what it's worth, that presentation was by William Kahan. “The Father of Floating Point” and the guy behind the IEEE 754 standard. He also has a Turing award.
As someone who doesn't typically have reason to use either -- is using floats rather than doubles actually common? I was under the impression this was pretty rare.
Is there any reason this is marked as scribd, when the link goes to a normal PDF? Usually I avoid scribd documents, but I noticed that the link didn't go to scribd.<p>[Apologies that this is Offtopic, but I was unsure where to post this question].
Is it infeasible to use something other than floats for such computations? There are many schemes for dealing with bigintegers, bigdecimals and such with reasonable performance.