“Extended-precision floating-point numbers for GPU computation”

  • ©

  • ©




    Extended-precision floating-point numbers for GPU computation


    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.  



    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.

ACM Digital Library Publication:

Overview Page: