“Extended-precision floating-point numbers for GPU computation”
Conference:
Type(s):
Title:
- Extended-precision floating-point numbers for GPU computation
Abstract:
This work describes and demonstrates doublefloats, software- based, extended-precision floating-point numbers that can be used effectively for real or complex GPU computation. GP-GPU pro- gramming makes use of the parallel vertex and fragment processing power of graphics hardware and uses texture memory for I/O. Cur- rent hardware has a wide per pixel date-path, reading and writing up to 128-bits of data at a time—four 32-bit floats—and allowing multiple floating-point textures as input and as render targets. For GPU computation, however, operations have been limited, at best, to IEEE single-precision floats. Doublefloats are implemented in Cg at the fragment-code level, us- ing unevaluated sums of 32-bit floats to create numbers with 48- significant bits, effectively twice the 24-bit precision of the single-precision value. Derived from [Hida et al. 2000], a doublefloat is a pair of single-precision floats (a0,a1) = a0+a1. Since such a representation is not unique, renormalization is used to provide a unique form. Arithmetic computations are carried out exactly using tem- porary variables and then the result renormalized to the standard representation.
References:
1. Briggs, K. 1998. Doubledouble floating point arithmetic. Tech. rep., http://keithbriggs.info/doubledouble.html.
2. Defour, D., and De Dinechin, F. 2002. Software carry-save for fast multiple-precision algorithms. Tech. Rep. Research Report No. 2002-8, École Normale Supérieure de Lyon, INRIA, Feb.
3. Hida, Y., Li, X. S., and Bailey, D. H. 2000. Quad-double arithmetic: Algorithms, implementation, and application. Tech. Rep. LBNL-46996, Lawrence Berkeley National Laboratory, Berkeley, CA, October 30.