toward a standard benchmark format and suite for floating ...ztatlock/pubs/fpbench...growing pains...

23
Toward a Standard Benchmark Format and Suite for Floating-Point Analysis Nasrine Damouche, Matthieu Martel, Pavel Panchekha, Chen Qiu, Alexander Sanchez-Stern, Zachary Tatlock.

Upload: others

Post on 13-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

TowardaStandardBenchmarkFormatandSuiteforFloating-PointAnalysis

Nasrine Damouche,Matthieu Martel,PavelPanchekha,ChenQiu,AlexanderSanchez-Stern,ZacharyTatlock.

Page 2: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Incredibleprogress…

AutomaticVerificationFluctuat [SAS’13]Rosa[POPL’14]FPTaylor [FM’15]

OptimizationSTOKE[PLDI’14]

ImprovementSalsa[FMICS’15]Herbie[PLDI’15]

MechanizedProofsWaveequation[ITP’10]Roundingerror[NSV’16]

Rapidimprovementinhardproblems!

Page 3: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Incredibleprogress…

AutomaticVerificationFluctuatRosaFPTaylor

OptimizationSTOKE

ImprovementSalsaHerbie

ManualVerificationWaveequationRoundingerror

Next???

Rapidimprovementinhardproblems!

Wewantourcommunitytokeepprogressing!

Page 4: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Incredibleprogress…

AutomaticVerificationFluctuatRosaFPTaylor

OptimizationSTOKE

ImprovementSalsaHerbie

ManualVerificationWaveequationRoundingerror

Next???

Rapidimprovementinhardproblems!

Wewantourcommunitytokeepprogressing!

Ascommunitygrows,growingpainsappear

Page 5: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Growingpains

Herbie:ulp(NaN, Inf) = UINT_MAXSTOKE:ulp(NaN, Inf) < UINT_MAX

Fluctuat:Poly, Inv, F1a, F1b, idem, …FPTaylor:sine, sqrt, verhulst, …

Rosa:def example(x: Double): Double = …Salsa:double example(double x) { … }𝑥 + 1� − 𝑥�

Similargrowingpainsincompilers,HPC,SAT,SMT,…

communities

Rosa Salsa

Compo

sition

FPTaylorFluctuatEvalua

tion

STOKEHerbie

Stan

dardiza

tion

Page 6: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

FPBench

FPBench iscommunityinfrastructureforcooperation andcomparisonintheFPcommunity.

http://fpbench.org

Page 7: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

BenchmarksuiteCommonformat Namedmeasures

FPBenchβ

Page 8: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

BenchmarksuiteCommonformat Namedmeasures

FPBenchβ

Page 9: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

(FPCore (x)

(- (sqrt (+ x 1)) (sqrt x)))

Arguments

S-expressionsyntax

𝑥 + 1� − 𝑥�

Page 10: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

(FPCore (x):name “Sqrt Difference”:cite (hamming-87):pre (> x 0)(- (sqrt (+ x 1)) (sqrt x)))

𝑥 + 1� − 𝑥�

Metadata

Preconditions

Page 11: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

(FPCore (x0):name “Sine Newton”:cite (darulova-kuncak-2014):pre (< (abs x0) 1)(while (< i 10)

([i 0 (+ i 1)][x x0 (- x (/ (+ (+ (- x (/ (pow x 3) 6.0))

(/ (pow x 5) 120.0))(/ (pow x 7) 5040.0))

(+ (+ (- 1.0 (/ (* x x) 2.0))(/ (pow x 4) 24.0))(/ (pow x 6) 720.0))))])

x))

Loops

Commonfunctions

Page 12: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

FPCore commonformat

Expressive

Extensible

SimpletouseS-expressionsyntaxPurelyfunctionalNocontrolflowanalysis

AllC,FortranfunctionsLoops,conditionalsToolssupportparts

MetadatapropertiesTool-specificmetadataInputoroutputformat

Generatefromhigher-level,imperativeFPImp lang.

Page 13: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

BenchmarksuiteCommonformat

Simpletoimplement

Coversallexistinguses

Simpletoextend,specialize

Namedmeasures

FPBenchβ

Page 14: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

BenchmarksuiteCommonformat

Simpletoimplement

Coversallexistinguses

Simpletoextend,specialize

Namedmeasures

FPBenchβ

Page 15: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

FPBench benchmarksuite

72totalbenchmarks

Drawnfromexistingpapers

Annotatedwithsource,ranges,description,citation

Page 16: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

FPBench benchmarksuite

Richfeatures DiversedomainsExistingprograms

FPTaylor 29Herbie 28Rosa 6Salsa 9

Arith 72Expt 16Trig 11Loop 12Branch 3

Textbook 59Math Alg 6Emb Sys 4Sci Comp 3

Page 17: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Benchmarksuite

Fromexistingprojects

Covermanydomains

Growsovertime

Commonformat

Simpletoimplement

Coversallexistinguses

Simpletoextend,specialize

Namedmeasures

FPBenchβ

Page 18: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Benchmarksuite

Fromexistingprojects

Covermanydomains

Growsovertime

Commonformat

Simpletoimplement

Coversallexistinguses

Simpletoextend,specialize

Namedmeasures

FPBenchβ

Page 19: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

FPBench measures

Formaldefinitionsofaccuracymeasures

Describedalong5axes

Standardmeasuressotoolsagree

Page 20: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

FPBench axesofmeasurement

Scalingvs.non-scaling

Forwardvs.backward

Maximumvs.average

Soundvs.statistical

Improvement

Absolute,relative,ULPs,bits,…

Fixedinputerrorvsfixedoutputerror

vs

Formalguaranteesvsmathematicalaccuracy

vs

Page 21: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Benchmarksuite

Fromexistingprojects

Covermanydomains

Growsovertime

Commonformat

Simpletoimplement

Coversallexistinguses

Simpletoextend,specialize

Namedmeasures

Termsformeasuringerror

Standardacrosstools

Flexiblebutrigorous

FPBenchβ

Page 22: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

Benchmarksuite

Fromexistingprojects

Covermanydomains

Growsovertime

Commonformat

Simpletoimplement

Coversallexistinguses

Simpletoextend,specialize

Namedmeasures

Termsformeasuringerror

Standardacrosstools

Flexiblebutrigorous

FPBenchβ

Page 23: Toward a Standard Benchmark Format and Suite for Floating ...ztatlock/pubs/fpbench...Growing pains Herbie: ulp(NaN, Inf) = UINT_MAX STOKE: ulp(NaN, Inf) < UINT_MAX Fluctuat: Poly,

BenchmarksuiteCommonformat Namedmeasures

FPBench

http://fpbench.org

FPBench iscommunityinfrastructureforcooperation andcomparisonintheFPcommunity.