Dynamic Floating-Point Cancellation Detection

Preview:

DESCRIPTION

Dynamic Floating-Point Cancellation Detection. Michael O. Lam (Presenter) Jeffrey K. Hollingsworth G. W. Stewart University of Maryland, College Park. Background ( Floating-Point Representation 101). Floating-point represents real numbers as (± sig × 2 exp ) Sign bit - PowerPoint PPT Presentation

Citation preview

Dynamic Floating-Point Cancellation

DetectionMichael O. Lam (Presenter)

Jeffrey K. HollingsworthG. W. Stewart

University of Maryland, College Park

2

Background(Floating-Point Representation 101)

Floating-point represents real numbers as (± sig × 2exp) Sign bit Significand (“mantissa” or “fraction”) Exponent

Floating-point numbers have finite binary precision Single-precision: 24 binary digits (~7 decimal digits) Double-precision: 53 binary digits (~16 decimal digits)

Examples: π 3.141592… 11.0010010… 1/10 0.1 0.0001100110…

Image from Wikipedia (“Single precision”)

3

Motivation Finite precision causes round-off error

Compromises ill-conditioned calculations Hard to detect and diagnose

Increasingly important as HPC scales Need to balance speed and accuracy

Lower precision is faster Higher precision is more accurate

Industry-standard double precision may still fail on long-running computations

4

Previous Solutions Analytical

Requires numerical analysis expertise Conservative static error bounds are largely

unhelpful Ad-hoc

Run experiments at different precisions Increase precision where necessary Tedious and time-consuming

5

Instrumentation Solution

Automated (vs. manual) Minimize developer effort Ensure consistency and correctness

Binary-level (vs. source-level) Include shared libraries without source code Include compiler optimizations

Runtime (vs. compile time) Dataset and communication sensitivity

6

Solution Components Dyninst-based instrumentation utility

(“mutator”) Cross-platform No special hardware required Stack walking and binary rewriting

Shared library with runtime analysis routines Flexibility and ease of development

Java-based log viewer GUI Cross-platform Minimal development effort

7

Analysis Process Run mutator

Find floating-point instructions Insert calls to shared library

Run instrumented program Executes analysis alongside original program Stores results in a log file

View output with GUI

8

Analysis Types Cancellation detection Shadow-value analysis

9

Cancellation Loss of significant digits during subtraction

operations

Cancellation is a symptom, not the root problem Indicates that a loss of information has occurred

that may cause problems later

1.613647 (7) 1.613647 (7) - 1.613635 (7) - 1.613647 (7) 0.000012 (2) 0.000000 (0)

(5 digits cancelled) (all digits cancelled)

1.6136473- 1.6136467 0.0000006

10

Detecting Cancellation For each addition/subtraction:

Extract value of each operand Calculate result and compare magnitudes

(binary exponents) If eans < max(ex,ey) there is a cancellation

For each cancellation event: Calculate “priority:” max(ex,ey) - eans If above threshold, save event information to

log For some events, record operand values

11

12

13

Experiments Gaussian elimination

Benefits of partial pivoting Differing runtime behavior of popular

algorithms

14

Gaussian EliminationA [L,U]

Partial pivoting Nominally to avoid division by zero Also avoids inaccurate results from small pivots This can be detected using cancellation

swap

15

cancellation

loss of data

pivot

16

Gaussian Cancellation

  log(diag. element size)  

  Threshold  

Matrix Size

-2 -4 -6 -8 Estimate1 7 13 1710 x 10 66 37 37 34 2515 x 15 225 123 122 122 10020 x 20 663 247 252 257 22525 x 25 1227 394 423 441 400

Cancellation Counts

17

Gaussian Elimination This suggests that cancellation can be used to

detect the effects of a small pivot Useful in sparse elimination with limited

ability to pivot Threshold must be kept high enough

18

Gaussian EliminationA [L,U]

Classical Bordered

19

Size of diagonal elements

Iterations of algorithm

Classical Bordered

  Classical Borderedthreshold 1 2 3 4 5 1 2 3 4 5smallest

diag. value                   

10-5 14 8 1 0 0 8 7 6 5 410-10 29 23 16 11 3 8 8 7 7 610-15 39 33 27 21 17 9 9 9 8 8

20

Gaussian Elimination Classical method: many small cancellations Bordered method: fewer but larger

cancellations Our tool can detect these differences and

inform the developer, who can then make decisions regarding which algorithm to use

21

Other Results Approximate nearest neighbor

More cancellations in denser point sets SPEC benchmarks milc and lbm

Cancellations in error calculations indicate good results

SPEC benchmark povray Cancellations indicate color black

22

Conclusions It is important to vary the threshold

Most calculations have background cancellations

Small cancellations can hide large ones Cancellation results require interpretation by

someone who is familiar with the algorithm Properly employed, cancellation detection can

help find “trouble spots” in numerical codes

23

Ongoing Research Shadow value analysis

Replace floating-point numbers with pointers to auxiliary information (higher precision, etc.)

double x = 1.0;

void func() { double y = 4.0; x = x + y;}

printf(“%f”, x);

1.0004.0005.000

“shadow value”

24

Shadow Value Analysis Current status: allows programmers to

automatically test their entire program in different precisions

Next step: selectively instrument particular code blocks or data structures

Goal: automated floating-point analysis and recommendation framework

25

Thank you! Code available upon request Questions?

26

Size of diagonal elements

Iterations of algorithm

Classical Bordered

threshold

1 2 3 4 5

smallest diag. value

C B C B C B C B C B

10-5 14 8 8 7 1 6 0 5 0 410-10 29 8 23 8 16 7 11 7 3 610-15 39 9 33 9 27 9 21 8 17 8

27

Gaussian Cancellation

log(pivot) -2 -4 -6 -8 log(pivot) -2 -4 -6 -8 Threshold 1 7 13 17 Threshold 1 7 13 17 n = 10         n = 20         Count 66 37 37 34 Count 663 247 252 257 Trunc 55 37 37 34 Trunc 298 245 252 257 Est 25 25 25 25 Est 225 225 225 225 n = 15 n = 25   Count 225 123 122 122 Count 1227 394 423 441 Trunc 154 122 122 122 Trunc 447 381 423 441 Est 100 100 100 100 Est 400 400 400 400

Recommended