21
FP-ANR: Another representation format to handle cancellation at run-time David Defour LAMPS, Univ. de Perpignan (France)

Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

FP-ANR: Another representation format to

handle cancellation at run-timeDavid Defour

LAMPS, Univ. de Perpignan (France)

Page 2: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Motivations

• Number’s representation really matters

• List of problems• Uncertainty

Imprecision from physical measure x = 123.45678, U = 10-5, x ∈[123.455;123.458]

• Cancellationx=1.0, y=10100, z=(x+y)-y = {1.0 ; 0.0}

• RoundingDiscretization of real number

Page 3: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Outline

• Background (Significance arithmetic, unum, …)• Representation format• Operations• Results• Conclusion

Page 4: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Background

• How to handle uncertainty

• Tools• CADNA, VERIFICARLO, PRECIMONIOUS, …

• Formats• Unum v1, v2, v3, v4 …. • Significance arithmetic

Page 5: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Unum V1

Page 6: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Background: Significance arithmetic

• How to represent numbers ?Old problem (1st computers)• Fixed-point

“exact” computation• Floating-point

deal with large/small numbers, but there are problems• Significance arithmetic

keep track of the number of significant digits • Denormalized number (add ‘0’ in the leading digits of the mantissa, ex: 0.000000123)• Index of significance (Argonne FLIP based on a triplet (xf,xp,xi), ex: (0.123,-6,3) )

• xf : fractional part ; xp : associated power ; xi: significant figures• Rely on an unused pattern in BCD format (A:1010 / B:1011) (ex: 1.23A000)

Page 7: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

FP-ANR: concept

• Implementation of significant arithmetic• Don’t:

• Throw away IEEE-754 arithmetic Why: good properties, backward compatibility,…

• Use extra fieldsWhy: memory and data transfer are expensive

• Use varying length Why: Make addressing, memory allocation, and hardware implementation difficult

• Do• Be IEEE-754 backward compatible

0 01111111 00000000000000000000000

significantpart

insignificantpart

Page 8: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

FP-ANR: Just a bit in the mantissa

• 2 patterns• 0 1 1 1 . . . 1 1 1• 1 0 0 0 . . . 0 0 0

• Example (Binay32)• Value 1: (IEEE-754)

0 01111111 00000000000000000000000

• Value 1: (FP-ANR, accurate to 23 bits)0 01111111 00000000000000000000001

• Value 1: (FP-ANR, accurate to 13 bits)0 01111111 00000000000010000000000

Page 9: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Impact on IEEE-754

• The right most « 1 » of the mantissa is called the significance flag

• Significance flag represents cancellation & uncertainty• Only for normal & subnormal numbers

• Others special cases remain unchanged.• +/- 0• +/- Inf• Nan

Page 10: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

A new concept: Representation of error

• When all bit of the mantissa are insignificant, it does not mean that we have a ‘0’ (which is the case with IEEE-754) it means that we have the order of magnitude of the error

0 01111111 00000000000000000000000(This number correspond to an exact 1 in IEEE-754)

2+6 2+5 2+4 2+3 2+2 2+1 20 2-1 2-2 2-3 2-4 2-5

FP Number

Insignifiant flag

position

Page 11: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Operation: Addition

• Similar to IEEE-754 addition + insignificant flag propagation

• Rule:

Let A, B, and R be 3 FP-ANR numbers with respectively a, b and r significant bits.

The number of significant bits r of the result R = A +/-B is determine as follow:

r = expR – MAX((expA-a),(expB-b))

FP Numbera

b

A

B

r=R

+

expA

Page 12: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Operation: Multiplication

• Similar to IEEE-754 Multiplication + insignificant flag propagation

• Rule:Let A, B, and R be 3 FP-ANR numbers with respectively a, b and r significant bits. The number of significant bits r of the result R = A (*,/) B is approximated as follow:

r = MIN(a,b)

a

b

A

B

=R r

Page 13: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Rounding

• Rounding mode• Similar to IEEE-754 …. • Except that it has to be done before the position of the insignificant flag

• No more Table Maker’s Dilemma• Can be circumvented by integrating the uncertainty which occurs during hard

to round case in the results.• Reproducibility can be ensure by setting a target accuracy function of the

number of significant bit in the input number.

Page 14: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

! computation

"# = 13

"'() ="'* + 1 − 1

"'! ~ 6 × 2' × "'

Iteration IEEE-754 FP-ANR (val , nbbit)0 3.464101615137755e+00 3.464101615137754e+00 521 3.215390309173475e+00 3.215390309173465e+00 492 3.159659942097510e+00 3.159659942097420e+00 473 3.146086215131467e+00 3.146086215131277e+00 454 3.142714599645573e+00 3.142714599644023e+00 435 3.141873049979866e+00 3.141873049977221e+00 416 3.141662747055068e+00 3.141662747046212e+00 397 3.141610176599522e+00 3.141610176535323e+00 378 3.141597034323337e+00 3.141597034060396e+00 359 3.141593748816856e+00 3.141593747306615e+00 33

10 3.141592927873633e+00 3.141592921689153e+00 3111 3.141592725622592e+00 3.141592703759670e+00 2912 3.141592671741545e+00 3.141592592000961e+00 2713 3.141592618900886e+00 3.141592383384705e+00 2514 3.141592671741545e+00 3.141592025756836e+00 2315 3.141591935881973e+00 3.141588211059570e+00 2116 3.141592671741545e+00 3.141571044921875e+00 1917 3.141581007579364e+00 3.141540527343750e+00 1718 3.141592671741545e+00 3.141357421875000e+00 1519 3.141406154737622e+00 3.140625000000000e+00 1320 3.140543492401100e+00 3.136718750000000e+00 1121 3.140006864690968e+00 3.125000000000000e+00 922 3.134945375658852e+00 3.093750000000000e+00 723 3.140006864690968e+00 3.000000000000000e+00 524 3.224515243534819e+00 3.000000000000000e+00 325 2.791117213058638e+00 2.000000000000000e+00 126 0.000000000000000e+00 ERR(2^1) 027 NAN ERR(2^1) 0

Archimedes

Page 15: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Conclusions

• FP-ANR • An alternative format to handle cancellation/uncertainty based on IEEE-754• Simple, easy to use, to understand, to implement

(ie: execution state similar to rounding mode)• Next

• Use AVX-512 features• Hardware implementation

• Significant arithmetic• Offers a solution to some numerical problems

(NOT ALL: EFT, …)• Decorrelation of variables is problematic• Can only come in support to traditional IEEE-754

(2100 + 210) – 2100

IEEE-754: 0

FP-ANR: ERR(247)

Correct: 1024.0

Page 16: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Software implementation: conversion

Use truncation: harder if other rounding mode is required

#include <ieee754.h>

/* Convert a binary32 number f toa FP-ANR number with p bits */

float Float2FpAnr(float f, int p){union ieee754_float d;d.f = f;

prec = MIN(22, p);

d.ieee.mantissa &= (0x7FFFFF<<(23-p));/* Set the significant flag */d.ieee.mantissa |= 1<<(22-p);

return d.f;}

/* Convert a FP-ANR number withp bits to a binary32 number */

float FpAnr2Fp(float f, int *p){union ieee754_float d;int c;

d.f = f;

if (d.ieee.mantissa!=0){c = count_trailing_zeros(d.ieee.mantissa);/* Remove the significant flag */d.ieee.mantissa ^= 1<<c;

}

*p = 22-c;return(d.f);

}

VRNDSCALE

AVX512

Page 17: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Software implementation: ADD/* Addition: return a1 + a2 */float FpAnrAdd(float a1, float a2){

float res;int e1, e2, er;int p1, p2;

res = FpAnr2Fp(a1, &p1) + FpAnr2Fp(a2, &p2);

frexp(a1, &e1);frexp(a2, &e2);frexp(res, &er);

return Float2FpAnr(res , er-MAX((e1-p1),(e2-p2)));}

/* Multiplication: return a1 * a2 */float FpAnrMul(float a1, float a2){

float res;int p1, p2;

res = FpAnr2Fp(a1, &p1) * FpAnr2Fp(a2, &p2);

return Float2FpAnr(res , MIN(p1,p2));}

VGETEXP

Page 18: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Hardware implementation

• Similar with IEEE-754 operator with the integration of significant signal as mentioned previously

• Example: significant signal generation based on OR gate:

0

Input mantissa

Significant signal

Significant part Insignificant part

00001111…

0001101…

Page 19: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Operations: Others

• Use first order Taylor series expansion to approximate uncertainty propagation• R = f(X) = sqrt(X), r = x + 1• R = f(X) = exp(X), r = x – log2|X|• R = f(X) = ln(X), r = x + log2|ln(X)|• R = f(X) = sin(X), r = x + log2|sin(X)/X.cos(X)|• R = f(X) = cos(X), r = x + log2|cos(X)/X.sin (X)|

• However, f(X) has to be quasi-linear & quasi-gaussian on the interval [X-eX ; X+eX]

Page 20: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Operations: interaction between FP-ANR & IEEE-754• Use conversion:• FP-ANR -> IEEE-754: replace the significant flag with a 0• IEEE-754 -> FP-ANR: replace the right most bit of the mantissa with a 1

• Mixing FP-ANR & IEEE-754 without special support is possible• Do not lead to crash or irrelevant results• Only the insignificant bit of the mantissa will be different but it should not be

a problem as those bit are considered as meaningless (correspond to noise)

Page 21: Another representation format to handle cancellation at ...keep track of the number of significant digits •Denormalized number (add ‘0’ in the leading digits of the mantissa,

Unum V2