do developers understand ieee floating point? · peter dinda conorhetland prescience lab department...

36
Peter Dinda Conor Hetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here, Please Participate! Paper in IPDPS 2018 Do Developers Understand IEEE Floating Point?

Upload: others

Post on 01-Sep-2019

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

PeterDindaConor Hetland

PrescienceLab

DepartmentofEECS

NorthwesternUniversity

pdinda.org

presciencelab.org

SurveyAvailableHere,

PleaseParticipate!

PaperinIPDPS2018

Do Developers UnderstandIEEE Floating Point?

Page 2: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

PaperinaNutshell:Not Really• Targetedsurvey

– AimedatpractitionerslikelytouseFP

– Quizzesforcore,optimization,andsuspicionofresults

– Firststudyofthiskind

• Participantsdoonlyslightlybetterthanchanceoncoreconcepts

– …anddon’tknowit

– Somefactorsmitigate,butnoneparticularlywell

• Participantsdonotunderstandoptimizationconcepts

– …anddoknowit

• Participantslesssuspiciousthantheyshouldbe

– …butsimilartostudentsinasophomorecourse

• Maybesystemssoftwarecandosomethingaboutit2

Page 3: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

Outline

• Motivation

• Studydesign

• Participantselectionandfactors

– Importantcaveat!

• Coreconcepts

• Optimizationconcepts

• Suspicionofresults

• Whattodo?

– Whatarewedoing?

3

Page 4: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ForaLongTime…

4

Compiler

(Optimizations)

Hardware

(Optimizations)Smallsetofhardware,IEEEcomplianceuniversal,slow

change

Smallsetofcompilersused,slowchange,difficulttobreak

IEEEcompliance

DeveloperFocusedonscientificandengineeringuses,

Someunderstandingofnumericalmethods

Assumption/understandingofIEEEfloatingpoint

IEEE754(-2008)

Standard

Stable,prettymuchuniversalstandardsinceearly1980s

Considerablecomplexity

Page 5: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

TheConcernsNow

5

Compiler

(Optimizations)

Fastevolution(e.g.,hardwarediversity(GPUs,FPGAs,ARM),half-floats,differentdenorm handling,non-IEEEcompliance,power/energy)

Fastevolution(e.g.,numerouscompilers,automaticprecisionreduction,approximatecomputing,optimizationflagchoice,automaticoptimizationsettingsearch,power/energy)

DeveloperDramaticexpansion inuses(e.g.,machinelearning,analytics,bigdata,andotherexpandingusesofFP)Lessknowledgeofnumericalmethods,andthestandard

IEEE754(-2008)

Standard

Stable,prettymuchuniversalstandardsinceearly1980s

Considerablecomplexity

Hardware

(Optimizations)

Page 6: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

DoDevelopersUnderstand….

6

Compiler

(Optimizations)

Hardware

(Optimizations)

Fastevolution(e.g.,hardwarediversity(GPUs,FPGAs,ARM),half-floats,differentdenorm handling,non-IEEEcompliance,power/energy)

Fastevolution(e.g.,numerouscompilers,automaticprecisionreduction,approximatecomputing,optimizationflagchoice,automaticoptimizationsettingsearch,power/energy)

DeveloperDramaticexpansion inuses(e.g.,machinelearning,analytics,bigdata,andotherexpandingusesofFP)Lessknowledgeofnumericalmethods,andstandard

IEEE754(-2008)

Standard

Stable,prettymuchuniversalstandardsinceearly1980s

Considerablecomplexity

CoreFocus

OptimizationFocus

…andSuspicion

Page 7: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

StudyDesign

• Anonymity

• Factoridentification

• Lowtimecommitment

• Surveyinstrument(web-based)

– Participantbackground(forfactoranalysis)

– Corequiz

– Optimizationquiz

– Suspicionquiz

• Closedforstudyreportedhere,butopenagainnow

– http://presciencelab.org/float

7

Page 8: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

StudyDesign

• Approximationofpractice

– Posequestionsthatmightariseduringsoftware

development

• Avoidpromptingoranchoring

– Don’ttestiftheyrememberterminology,testif

theycanseetheconcept

• Inasnippetofcode…• Inachoiceofoptimizationoption...

• Inanintern’squestion...

8

Page 9: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

CoreQuiz

• Floatingpointarithmeticisnotrealnumber

arithmetic,eventhoughitlookslikeit

– Commutativity,associativity,distributivity,

ordering,identity,negativezero,overflow,NaN,

operationprecision,denormalized numbers,

signaling…

• Floatingpointdoesnotbehavelikecomputer

integerarithmeticeither...

– Overflow(saturation),underflow,NaN,signaling

9

Page 10: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

Example

10

Page 11: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

OptimizationQuiz

• Hardwarefeatureschangestandard

compliance

–MADD,Flush-to-Zero

• Compileroptimizationschangestandard

compliance

–What’sthehighest-O levelthatisstandardcompliant?

– Is--fast-math standardscompliant?

• Optionsandfeaturescanbreakcompliance

11

Page 12: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

12

Page 13: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

SuspicionQuiz

• Floatingpointconditioncodescanpointto

numericproblems

• Howsuspiciousshouldyoubeofyourresults

whenyourcodeproducesa…

– Overflow,underflow,precision(rounding),invalid

(NaN),ordenormalizedresult

• Lackofsuspicionmaymeanbadresultsget

through

13

Page 14: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

Example

14

Page 15: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ParticipantRecruitmentGoals

• PhDstudentorabove

• Activelyinvolvedinsoftwaredevelopmentor

managementforscienceandengineering

– Bothasmainandsecondaryroles

• Universities,nationallabs,andindustry

15

BiggestCaveat:Notarandomsample

Page 16: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ParticipantRecruitmentProcess

• Standardizedemailsenttoseedrecipients

– Relevantdepartmentchairs,centerdirectors,

faculty,postdocs,andPh.D.studentsatNU

– Highest-levelpersonalcontactsatnationallabs– Facultycontactsat>20universities

• Requesttotakesurveyandforwardemailonly

topeoplerelevant toourrecruitmentgoals

16

Page 17: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ParticipantBackground/Factors

• Anonymity

• 199Participants

– Plusadditional52undergradsforsuspicionquiz

• 11factors(self-reported)

– 2pagesofdetailsinpaper

• Factorsmattermuchlessthanexpected

– Willhighlightafewaswegoon

17

Page 18: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

Prepare to be Scared

18

Page 19: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

19

Contributed Codebase Floating Point Extent n %FP incidental 77 38.7FP intrinsic 63 31.7FP intrinsic, I did numerical correctness 29 14.6FP intrinsic, other team did numerical correctness 10 5.0FP intrinsic, my team did numeric correctness 10 5.0No FP involved 9 4.5No Report 1 0.5

Figure 9: Contributed Codebase Floating Point Extent ofparticipants (within the codebase they built (Figure 8.)

Involved Codebase Sizes n %10,001 to 100,000 lines of code 61 30.71,001 to 10,000 lines of code 53 26.6>1,000,000 lines of code 36 18.1100,001 to 1,000,000 lines of code 36 18.1100 to 1,000 lines of code 8 4.0<100 lines of code 2 1.0No Report 3 1.5

Figure 10: Involved Codebase Sizes of participants.

point, most commonly one or more lectures in a course.Almost all report informal training about floating point,with Googling and reading being the most common. De-pressingly, less than 20% report training from their adviseror mentor. The participants have experience with floatingpoint in 55 different languages, with Python, C, C++,Matlab, Java, and Fortran each being reported by 1/3 ormore. Over 2/3 have experience with arbitrary precisionlanguages/libraries, with Mathematica being by far the mostcommon (over 1/3).

Almost 1/2 of our participants have personally written acodebase or made a codebase contribution of at least 10,000lines of code, and floating point was intrinsic to almost 2/3of those codebases. Over 2/3 have been involved with acodebase of at least 10,000 lines of code, and floating pointwas intrinsic to over half of those codebases. Less than 8%reported codebases in which floating point was not involved.

Of course, our analysis results depend on the natureof the sample. We believe that the combination of ourrecruitment process and the resulting background of theparticipants illustrated here suggest that our sample is a goodrepresentative of software developers who write code for,and in support of, science and engineering applications.

Additional participant group for suspicion quiz: Wealso administered the suspicion quiz (Section II-D) to a

Involved Codebase Floating Point Extent n %FP incidental 71 35.7FP intrinsic 55 27.6FP intrinsic, I did numerical correctness 23 11.6FP intrinsic, other team did numerical correctness 17 8.5No FP involved 15 7.5FP intrinsic, my team did numeric correctness 13 6.5No Report 5 2.5

Figure 11: Involved Codebase Floating Point Extent ofparticipants within the largest codebase they were involvedwith (Figure 10).

0 5 10 150

10

20

30

40

Core Questions Correct

Cou

nt

Figure 13: Histogram of core quiz scores. There are 15questions. Chance would put the mean at 7.5.

group of 52 undergraduates at Northwestern. These studentswere taking EECS 213, Introduction to Computer Systems,which includes book [3], lecture (one week / 160 minutes),lab (⇠1/8 of lab content in quarter), and homework (⇠1/8 ofhomework content in quarter) material on floating point. Thecourse material did not include the floating point conditioncodes (other than the x64’s oddball use of the parity bitto indicate a NaN result). Note that this training is similarin lecture quantity (one or more weeks) to about 1/4 ofour previous study population (Figure 3). The suspicionquiz was given as a midterm exam problem. There wereno wrong answers, although the students did not know thiswhen taking the exam. This data gives us a comparisongroup for the suspicion quiz for whom we know preciselythe content of the formal training given.

IV. ANALYSIS RESULTS

We analyzed the dataset in a wide variety of ways withthe following questions in mind:

• Do developers understand floating point arithmetic interms of how it differs from real arithmetic and com-puter integer arithmetic?

• Do developers understand how optimizations at thehardware and compiler level may affect the behavior offloating point arithmetic within or beyond the standard?

• What are the common misunderstandings?• What factors have an effect on understanding?• What might make developers suspicious of a result?

We now summarize the main results of our analysis.

A. General understanding

The most important results of our analysis are in Fig-ure 12. Here, we show what the average (i.e. expected) scorewas on the core and optimization quizzes. Our participantsgenerally feel they can answer the core quiz questions, butthen perform at near chance levels on those questions. Thescore for the core quiz was 8.5/15, which is only slightlybetter than would be expected by chance (7.5/15). Figure 13shows a histogram of scores on the core quiz. There is asubtlety here in that “Don’t Know” was a possible responseto a question. The incidence of this, however, was < 15%for the core quiz. In contrast, in the optimization quiz, our

Chance

Page 20: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ExperienceWithCodeMatters(slightly)

20

Core Quiz# Correct # Incorrect # Don’t Know # No Answer # Chance

8.5 4.0 2.3 0.2 7.5Optimization Quiz

# Correct # Incorrect # Don’t Know # No Answer # Chance0.6 0.2 2.2 0.1 1.5

Figure 12: Average (expected) performance of participants on the core and optimization quizzes. For the core quiz, mostparticipants were comfortable giving an answer for most questions, yet the expected number of correctly answered questions(8.5) is only slightly higher than would be expected by chance (7.5). For the optimization quiz, most participants answered“Don’t Know” for most questions. Standard-compliant Level is not included as it is not a T/F question.

participants generally recognized their ignorance, answering“Don’t Know” over 2/3 of the time.

The core quiz behavior is alarming, while the optimizationquiz behavior is reassuring. Our participants seem to beappropriately wary about compiler and hardware optimiza-tions (perhaps because that level of detail may not havebeen encountered before in their limited training (Figures 3and 4), but overconfident in basic floating point behavior(which is encountered in these forms of training).

Figure 14 is a question-by-question breakdown of the corequiz. As highlighted in the table, 6/15 questions are an-swered at chance levels, while 2/15 are answered incorrectlyby most participants. Notice also that while participantsdo better than chance on Associativity (69.3% correct),Overflow (60.8%), and Exception Signal (69.3%), these arenot exactly stellar numbers for such important concepts. 30%of our participants may think that an exceptional floatingpoint value (NaN, etc) will result in a signal, which it willnot. Considering Overflow and the Saturation questions, asmany as half of our participants may not fully appreciatethat floating point arithmetic is saturating arithmetic insteadof modular arithmetic.

Figure 15 is a question-by-question breakdown of the op-timization quiz. The news here is that over 2/3 of participantsreported that they did not know whether noted optimizationsresulted in non-standard behavior. <10% (<20% with amore generous definition) knew at which optimization levelthe compiler could produce non-standard compliant code.Less than 1/3 knew that -ffast-math, the “least con-forming but fastest math mode” to quote the gcc manual,could produce non-standard behavior.

B. Factor analysis for core quiz

We considered each of our background factors (Sec-tion II-A) as a predictor of performance on the core andoptimization quizzes. We have enough data to meaningfullyconsider each factor in isolation, which we did. In thefollowing, we report on the factors that seem to have thelargest significance only.

Although several factors are somewhat predictive, nofactor has an outsize impact on performance in the corequiz. In the best case, the average performance rises from8.5/15 to 11/15, and the variation across the values of thefactor is 4/15.

0

2

4

6

8

10

12

14

16

>1M 100K-1M 10K-100K 1K-10K 100-1K

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 16: Effect of Contributed Codebase Size on core quizscores.

Perhaps not surprisingly, the most predictive factor issimply Contributed Codebase Size, the effect of whichis shown in Figure 16. The effect of Involved CodebaseSize is similar. The larger the codebase that the participanthas experienced or built, the better their understanding offloating point. However, this is no panacea. Even those whohave built million line codebases are still getting an averageof 4 out of 15 questions wrong.

One might expect that given the importance of Con-tributed Codebase Size (or Involved Codebase Size), thatContributed Codebase Floating Point Extent (and InvolvedCodebase Floating Point Extent), which measure the degreeof the participant’s interaction with floating point withinthese codebases, would be high. While there is an effect—ifthe participant or their team focused on numeric correctnesswithin a codebase, they are more likely to have a higherscore—it is a small effect. There is a gain of only about 2/15compared to those who reported a codebase where floatingpoint was not intrinsic or where they were not involved.

Area follows Codebase Size closely as a predictive factor,and is illustrated in Figure 17. It may not be surprisingthat participants from areas closest to the construction offloating point (EE, CS, CE) do better, but note that this atbest raises average performance from 8.5/15 to 11/15 andthe variation across the values is 3.5/15. What is particularlydisturbing is that “Other Physical Science Field” (PhysSci)and “Other Engineering Field” (Eng) are performing at thelevel of chance. Yet developers from these areas are likelyto be the most extensive users of floating point!

The effect of the participant’s Software Development Role

Chance

Page 21: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

AreaMatters(slightly)

21

Question % Correct % Incorrect % Don’t Know % UnansweredCommutativity 53.3 27.6 18.6 0.5Associativity 69.3 14.1 15.6 1.0Distributivity 81.9 6.0 10.6 1.5Ordering 80.4 6.0 12.6 1.0Identity 16.6 76.9 5.5 1.0Negative Zero 58.8 28.1 11.6 1.5Square 47.2 35.2 16.6 1.0Overflow 60.8 24.1 11.1 4.0Divide by Zero 11.6 76.4 11.1 1.0Zero Divide By Zero 70.4 9.0 19.6 1.0Saturation Plus 54.8 26.1 17.6 1.5Saturation Minus 53.3 25.6 19.6 1.5Denormal Precision 52.3 24.6 22.1 1.0Operation Precision 73.4 9.0 16.6 1.0Exception Signal 69.3 10.1 19.6 1.0

Figure 14: Core quiz questions. Boldfaced questions were answered correctly at the level of chance. Italicized questionswere answered incorrectly or reported as unknown more often than answered correctly.

Question % Correct % Incorrect % Don’t Know % UnansweredMADD 15.6 10.0 72.4 2.0Flush to Zero 13.6 7.5 76.9 2.0Standard-compliant Level 8.5 20.7 68.8 2.0Fast-math 29.1 3.0 65.8 2.0

Figure 15: Optimization quiz questions. All questions were reported as unknown by more than half the participants.

0

2

4

6

8

10

12

14

16

EE CS CE Math PhysSci Eng

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 17: Effect of Area on core quiz scores.

0

2

4

6

8

10

12

14

16

SWEng SWEngMgr SupMain SupMainMgr Unspecified

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 18: Effect of Software Development Role on corequiz scores.

follows in importance, and is illustrated in Figure 18. Thosewho view their main role as software engineering do slightlybetter than those who see their software engineering as donein support of their main role.

0

2

4

6

8

10

12

14

16

>=week >=course >=lecture None

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 19: Effect of Formal Training (in floating point) oncore quiz scores.

One might hope that Formal Training (in floating point)would have a considerable effect. While it does have aneffect (as illustrated in Figure 19, it is not a large one. Themaximum gain over the baseline is only about 1/15, and thevariation is about 2/15.

The factors we have not discussed thus far, Position, In-formal Training (in Floating Point), Floating Point LanguageExperience, and Arbitrary Precision Language Experience,have minimal or ambiguous effects on core quiz scores.Note that the participant supplies lists for some of thesefactors. What seems to be true about them is that very shortlists predict bad scores. That is provided the participant hasreported some kind of Informal Training, etc, it does notseem to matter what it is. A possible explanation is that theseare driven by the two Codebase Size factors. If a participantwrote or was involved with a codebase of any significantsize, they probably experienced a range of languages and

Chance

Page 22: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

Now Some Good News for Correctness, but

Bad News for Innovation

22

Page 23: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ParticipantsAwareofNotUnderstanding

Optimizations(HW/SW)

23

0

0.5

1

1.5

2

2.5

3

EE CE CS Math PhysSci Eng

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 20: Effect of Area on optimization quiz scores.

0

0.5

1

1.5

2

2.5

3

>=week >=course None >=lecture

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 21: Effect of Software Development Role on opti-mization quiz scores.

had to participate in some kind of informal training.

C. Factor analysis for optimization quizThe main story about the optimization quiz is the domi-

nance of the response “Don’t Know” regardless of how thedata is sliced by the factors.

Only the factors Software Development Role (Figure 21)and Area (Figure 20) appear in our data to have an effecton optimization quiz scores. Even there, the effects capquickly (0.7/3 above chance for Role and 0.5 above chancefor Area), although the variation is considerable (1.4/3 forRole and 0.8/3 for Area). The effect of Informal Training (infloating point) is ambiguous in our data, although it couldbe interpreted as producing considerable variation, albeit themaximum effect we see is only slightly better than chance.

It is surprising that factors like the codebase sizes andfloating point experience within codebases have no effecthere. On the other hand, the limited impact of FormalTraining (in floating point) could be explained by the factthat most of those who have received training in our samplehave received a level similar to that of an introductorycomputer systems or machine organization course. Such anintroduction will not touch on optimizations at all.

D. Suspicion analysisThere is of course no ground truth for the suspicion

quiz component of our survey, and it really depends on

the application. However, as we described earlier, someexceptional conditions are generally more suspicious thanothers—an arguably reasonable ranking is that generating aNaN (Invalid) is by far more suspicious than generating aninfinity (Overflow), which is in turn much more suspiciousthan generating any of the other three conditions.

Figure 22(a) shows the distribution of reported suspicionfor the five exceptional conditions within our 199 participantmain group, while Figure 22(b) shows the correspondingdistribution for our separate 52 participant student group.The groups behave quite similarly, although the studentgroup is overall less suspicious about Underflow and De-norm, possibly because the topic is fresh in their mindsgiven the course. The student group is also less suspiciousof Overflow.

As we might hope, both groups do tend to be moresuspicious of Invalid and Overflow than the other conditions.However, consider Invalid more carefully: About 1/3 of bothgroups reported a suspicion level less than the maximum fora computation that somewhere encountered a NaN!

V. CONCLUSIONS

Stepping back from the data and analysis, we believe thatsome generalizations can be made, along with actions toaddress them.

Observation: Many developers do not understand corefloating point behavior particularly well, yet believe they do.This suggests that some existing and future codebases mayhave hidden numeric correctness issues. This is probablymore likely to be the case in smaller and newer projectswhere there is no specialist whose role is in part to mitigatethese issues. As use of floating point rapidly expands outsideof the traditional domains of science and engineering, theproblem is likely becoming widespread.

Action: The HPC community should make an effort tomake developers in general more suspicious about floatingpoint behavior. The analogy might be how the programminglanguages and operating systems communities have raisedawareness about C’s undefined behavior and its interactionwith modern compilers [12], [14].

Action: Although our study found that formal trainingin floating point has only a small effect on understanding,we believe the issue is not that training does not work perse, but rather that the community has just not found theright training approach yet. A rigorous process to developeffective training for a broad range of developers is an actionthat the HPC community, for example via SIGHPC, couldundertake. We would then also need to convince the broader(and ever expanding) non-CS community of developers thatsuch training is necessary.

Action: Static and dynamic analysis tools that can ex-amine existing codebases and point developers to potentiallysuspicious code would likely have significant impact. Severalsuch tools exist [1], [11], [8], but the tools would also need

Page 24: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ParticipantsAwareofNotUnderstanding

Optimizations(HW/SW)

24

0

0.5

1

1.5

2

2.5

3

EE CE CS Math PhysSci Eng

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 20: Effect of Area on optimization quiz scores.

0

0.5

1

1.5

2

2.5

3

>=week >=course None >=lecture

Numbe

rofQ

uestions

#Correct #Incorrect #Don'tKnow #Unanswered

Figure 21: Effect of Software Development Role on opti-mization quiz scores.

had to participate in some kind of informal training.

C. Factor analysis for optimization quizThe main story about the optimization quiz is the domi-

nance of the response “Don’t Know” regardless of how thedata is sliced by the factors.

Only the factors Software Development Role (Figure 21)and Area (Figure 20) appear in our data to have an effecton optimization quiz scores. Even there, the effects capquickly (0.7/3 above chance for Role and 0.5 above chancefor Area), although the variation is considerable (1.4/3 forRole and 0.8/3 for Area). The effect of Informal Training (infloating point) is ambiguous in our data, although it couldbe interpreted as producing considerable variation, albeit themaximum effect we see is only slightly better than chance.

It is surprising that factors like the codebase sizes andfloating point experience within codebases have no effecthere. On the other hand, the limited impact of FormalTraining (in floating point) could be explained by the factthat most of those who have received training in our samplehave received a level similar to that of an introductorycomputer systems or machine organization course. Such anintroduction will not touch on optimizations at all.

D. Suspicion analysisThere is of course no ground truth for the suspicion

quiz component of our survey, and it really depends on

the application. However, as we described earlier, someexceptional conditions are generally more suspicious thanothers—an arguably reasonable ranking is that generating aNaN (Invalid) is by far more suspicious than generating aninfinity (Overflow), which is in turn much more suspiciousthan generating any of the other three conditions.

Figure 22(a) shows the distribution of reported suspicionfor the five exceptional conditions within our 199 participantmain group, while Figure 22(b) shows the correspondingdistribution for our separate 52 participant student group.The groups behave quite similarly, although the studentgroup is overall less suspicious about Underflow and De-norm, possibly because the topic is fresh in their mindsgiven the course. The student group is also less suspiciousof Overflow.

As we might hope, both groups do tend to be moresuspicious of Invalid and Overflow than the other conditions.However, consider Invalid more carefully: About 1/3 of bothgroups reported a suspicion level less than the maximum fora computation that somewhere encountered a NaN!

V. CONCLUSIONS

Stepping back from the data and analysis, we believe thatsome generalizations can be made, along with actions toaddress them.

Observation: Many developers do not understand corefloating point behavior particularly well, yet believe they do.This suggests that some existing and future codebases mayhave hidden numeric correctness issues. This is probablymore likely to be the case in smaller and newer projectswhere there is no specialist whose role is in part to mitigatethese issues. As use of floating point rapidly expands outsideof the traditional domains of science and engineering, theproblem is likely becoming widespread.

Action: The HPC community should make an effort tomake developers in general more suspicious about floatingpoint behavior. The analogy might be how the programminglanguages and operating systems communities have raisedawareness about C’s undefined behavior and its interactionwith modern compilers [12], [14].

Action: Although our study found that formal trainingin floating point has only a small effect on understanding,we believe the issue is not that training does not work perse, but rather that the community has just not found theright training approach yet. A rigorous process to developeffective training for a broad range of developers is an actionthat the HPC community, for example via SIGHPC, couldundertake. We would then also need to convince the broader(and ever expanding) non-CS community of developers thatsuch training is necessary.

Action: Static and dynamic analysis tools that can ex-amine existing codebases and point developers to potentiallysuspicious code would likely have significant impact. Severalsuch tools exist [1], [11], [8], but the tools would also need

“don’tknow”

Page 25: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

Now Some News that is Hard to Characterize

25

Page 26: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

26

1 2 3 4 50

20

40

60

80

100

Suspicion Level

Perc

ent R

epor

ting

OverflowUnderflowPrecisionInvalidDenorm

1 2 3 4 50

20

40

60

80

100

Suspicion Level

Perc

ent R

epor

ting

OverflowUnderflowPrecisionInvalidDenorm

(a) Main Group (n = 199) (b) Student Group (n = 52)Figure 22: Distribution of suspicion for different exceptional conditions.

to have interfaces suitable for a non-CS community andhave a low barrier to use. Perhaps commercial tools likeCoverity [2] will expand their purview to include floatingpoint. We ourselves have been developing a simple runtimemonitoring tool to spy on unmodified binaries and trackexceptional conditions using floating point condition codes,similar to the structure of the suspicion quiz.

Action: The boundary between floating point and arbi-trary precision arithmetic is too thick. A system that wouldallow code written using floating point to be seamlesslycompiled to use arbitrary precision would enable developersto easily sanity check the behavior of their code (and anyoptimizations they chose). A particularly paranoid developercould just opt for slow, arbitrary precision results.

Observation: Many developers recognize their lack ofknowledge of how hardware and software optimizationsaffect floating point behavior. As the space of such opti-mizations expands, it could be that developers simply usethem without understanding the consequences, or developerscould simply avoid them out of fear of incorrect results,which would reduce their impact. There may be a parallelwith the OS developer community, where optimizations thatleverage C’s undefined behavior are carefully avoided lestthey break working kernel code or make it insecure.

Action: We need to assess to what extent developerswittingly or unwittingly use hardware and software opti-mizations without knowing their consequences. Are theyas conservative about what they use as they are aboutwhat they think they know? If not, then the introductionof optimizations may be leaving a hidden trail of incorrectresults behind it.

Action: Optimization implementations should take de-veloper knowledge into account—ideally, a developer wouldnot be able to use an optimization without demonstrating thatthey understand it. How can we create an effective interfacefor this that would not be gameable or too onerous to use?

REFERENCES

[1] F. Benz, A. Hildebrandt, and S. Hack, “A dynamic pro-gram analysis to find floating-point accuracy problems,” inProceedings of the 33rd ACM SIGPLAN Conference onProgramming Language Design and Implementation (PLDI),2012.

[2] A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem,C. Henri-Gros, A. Kamsky, S. McPeak, and D. Engler, “A fewbillion lines of code later: Using static analysis to find bugsin the real world,” Commuications of the ACM, vol. 53, no. 2,pp. 66–75, February 2010.

[3] R. Bryant and D. O’Hallaron, Computer Systems: A Program-mer’s Perspective, 3rd ed. Pearson, 2015.

[4] M. Fagan, J. Schlachter, K. Yoshii, S. Leyffer, K. Palem,M. Snir, S. M. Wild, and C. Enz, “Overcoming the powerwall by exploiting inexactness and emerging cots architecturalfeatures: Trading precision for improving application quality,”in Proceedings of the 9th IEEE International System-on-ChipConference (SOCC), September 2016.

[5] K. Hoste and L. Eeckhout, “Cole: Compiler optimization levelexploration,” in Proceedings of the 6th Annual IEEE/ACM In-ternational Symposium on Code Generation and Optimization(CGO), 2008.

[6] IEEE Floating Point Working Group, “IEEE standard forbinary floating-point arithmetic,” ANSI/IEEE Std 754-1985,1985.

[7] ——, “IEEE standard for floating-point arithmetic,” IEEE Std754-2008, pp. 1–70, Aug 2008.

[8] M. O. Lam, J. K. Hollingsworth, and G. Stewart, “Dynamicfloating-point cancellation detection,” Parallel Computing,vol. 39, no. 3, pp. 146–155, 2013.

[9] S. Mittal, “A survey of techniques for approximate comput-ing,” ACM Computing Surveys, vol. 48, no. 4, Mar. 2016.

[10] F. C. Moon, Chaotic and Fractal Dynamics: An Introductionfor Applied Scientists and Engineers. John Wiley and Sons,Inc., 1992.

[11] P. Panchekha, A. Sanchez-Stern, J. R. Wilcox, and Z. Tatlock,“Automatically improving accuracy for floating point expres-sions,” in Proceedings of the 36th ACM SIGPLAN Confer-ence on Programming Language Design and Implementation(PLDI), 2015.

[12] J. Regehr, “Embedded in academia,” https://blog.regehr.org/,a long running series of posts on undefined behavior has beenwidely read.

[13] C. Rubio-Gonzalez, C. Nguyen, H. D. Nguyen, J. Demmel,W. Kahan, K. Sen, D. H. Bailey, C. Iancu, and D. Hough,“Precimonious: Tuning assistant for floating-point precision,”in Proceedings of the International Conference on HighPerformance Computing, Networking, Storage and Analysis(Supercomputing), 2013.

[14] X. Wang, N. Zeldovich, M. F. Kaashoek, and A. Solar-Lezama, “Towards optimization-safe systems: Analyzing theimpact of undefined behavior,” in Proceedings of the 24thACM Symposium on Operating Systems Principles (SOSP),November 2013.

Canyoutellthese

graphsapart?

Oneisundergradsin

anintroductory

systemscourse

Page 27: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

27

1 2 3 4 50

20

40

60

80

100

Suspicion Level

Perc

ent R

epor

ting

OverflowUnderflowPrecisionInvalidDenorm

1 2 3 4 50

20

40

60

80

100

Suspicion Level

Perc

ent R

epor

ting

OverflowUnderflowPrecisionInvalidDenorm

(a) Main Group (n = 199) (b) Student Group (n = 52)Figure 22: Distribution of suspicion for different exceptional conditions.

to have interfaces suitable for a non-CS community andhave a low barrier to use. Perhaps commercial tools likeCoverity [2] will expand their purview to include floatingpoint. We ourselves have been developing a simple runtimemonitoring tool to spy on unmodified binaries and trackexceptional conditions using floating point condition codes,similar to the structure of the suspicion quiz.

Action: The boundary between floating point and arbi-trary precision arithmetic is too thick. A system that wouldallow code written using floating point to be seamlesslycompiled to use arbitrary precision would enable developersto easily sanity check the behavior of their code (and anyoptimizations they chose). A particularly paranoid developercould just opt for slow, arbitrary precision results.

Observation: Many developers recognize their lack ofknowledge of how hardware and software optimizationsaffect floating point behavior. As the space of such opti-mizations expands, it could be that developers simply usethem without understanding the consequences, or developerscould simply avoid them out of fear of incorrect results,which would reduce their impact. There may be a parallelwith the OS developer community, where optimizations thatleverage C’s undefined behavior are carefully avoided lestthey break working kernel code or make it insecure.

Action: We need to assess to what extent developerswittingly or unwittingly use hardware and software opti-mizations without knowing their consequences. Are theyas conservative about what they use as they are aboutwhat they think they know? If not, then the introductionof optimizations may be leaving a hidden trail of incorrectresults behind it.

Action: Optimization implementations should take de-veloper knowledge into account—ideally, a developer wouldnot be able to use an optimization without demonstrating thatthey understand it. How can we create an effective interfacefor this that would not be gameable or too onerous to use?

REFERENCES

[1] F. Benz, A. Hildebrandt, and S. Hack, “A dynamic pro-gram analysis to find floating-point accuracy problems,” inProceedings of the 33rd ACM SIGPLAN Conference onProgramming Language Design and Implementation (PLDI),2012.

[2] A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem,C. Henri-Gros, A. Kamsky, S. McPeak, and D. Engler, “A fewbillion lines of code later: Using static analysis to find bugsin the real world,” Commuications of the ACM, vol. 53, no. 2,pp. 66–75, February 2010.

[3] R. Bryant and D. O’Hallaron, Computer Systems: A Program-mer’s Perspective, 3rd ed. Pearson, 2015.

[4] M. Fagan, J. Schlachter, K. Yoshii, S. Leyffer, K. Palem,M. Snir, S. M. Wild, and C. Enz, “Overcoming the powerwall by exploiting inexactness and emerging cots architecturalfeatures: Trading precision for improving application quality,”in Proceedings of the 9th IEEE International System-on-ChipConference (SOCC), September 2016.

[5] K. Hoste and L. Eeckhout, “Cole: Compiler optimization levelexploration,” in Proceedings of the 6th Annual IEEE/ACM In-ternational Symposium on Code Generation and Optimization(CGO), 2008.

[6] IEEE Floating Point Working Group, “IEEE standard forbinary floating-point arithmetic,” ANSI/IEEE Std 754-1985,1985.

[7] ——, “IEEE standard for floating-point arithmetic,” IEEE Std754-2008, pp. 1–70, Aug 2008.

[8] M. O. Lam, J. K. Hollingsworth, and G. Stewart, “Dynamicfloating-point cancellation detection,” Parallel Computing,vol. 39, no. 3, pp. 146–155, 2013.

[9] S. Mittal, “A survey of techniques for approximate comput-ing,” ACM Computing Surveys, vol. 48, no. 4, Mar. 2016.

[10] F. C. Moon, Chaotic and Fractal Dynamics: An Introductionfor Applied Scientists and Engineers. John Wiley and Sons,Inc., 1992.

[11] P. Panchekha, A. Sanchez-Stern, J. R. Wilcox, and Z. Tatlock,“Automatically improving accuracy for floating point expres-sions,” in Proceedings of the 36th ACM SIGPLAN Confer-ence on Programming Language Design and Implementation(PLDI), 2015.

[12] J. Regehr, “Embedded in academia,” https://blog.regehr.org/,a long running series of posts on undefined behavior has beenwidely read.

[13] C. Rubio-Gonzalez, C. Nguyen, H. D. Nguyen, J. Demmel,W. Kahan, K. Sen, D. H. Bailey, C. Iancu, and D. Hough,“Precimonious: Tuning assistant for floating-point precision,”in Proceedings of the International Conference on HighPerformance Computing, Networking, Storage and Analysis(Supercomputing), 2013.

[14] X. Wang, N. Zeldovich, M. F. Kaashoek, and A. Solar-Lezama, “Towards optimization-safe systems: Analyzing theimpact of undefined behavior,” in Proceedings of the 24thACM Symposium on Operating Systems Principles (SOSP),November 2013.

Canyoutellthese

graphsapart?

Oneisundergradsin

anintroductory

systemscourse

Page 28: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

28

1 2 3 4 50

20

40

60

80

100

Suspicion Level

Perc

ent R

epor

ting

OverflowUnderflowPrecisionInvalidDenorm

1 2 3 4 50

20

40

60

80

100

Suspicion Level

Perc

ent R

epor

ting

OverflowUnderflowPrecisionInvalidDenorm

(a) Main Group (n = 199) (b) Student Group (n = 52)Figure 22: Distribution of suspicion for different exceptional conditions.

to have interfaces suitable for a non-CS community andhave a low barrier to use. Perhaps commercial tools likeCoverity [2] will expand their purview to include floatingpoint. We ourselves have been developing a simple runtimemonitoring tool to spy on unmodified binaries and trackexceptional conditions using floating point condition codes,similar to the structure of the suspicion quiz.

Action: The boundary between floating point and arbi-trary precision arithmetic is too thick. A system that wouldallow code written using floating point to be seamlesslycompiled to use arbitrary precision would enable developersto easily sanity check the behavior of their code (and anyoptimizations they chose). A particularly paranoid developercould just opt for slow, arbitrary precision results.

Observation: Many developers recognize their lack ofknowledge of how hardware and software optimizationsaffect floating point behavior. As the space of such opti-mizations expands, it could be that developers simply usethem without understanding the consequences, or developerscould simply avoid them out of fear of incorrect results,which would reduce their impact. There may be a parallelwith the OS developer community, where optimizations thatleverage C’s undefined behavior are carefully avoided lestthey break working kernel code or make it insecure.

Action: We need to assess to what extent developerswittingly or unwittingly use hardware and software opti-mizations without knowing their consequences. Are theyas conservative about what they use as they are aboutwhat they think they know? If not, then the introductionof optimizations may be leaving a hidden trail of incorrectresults behind it.

Action: Optimization implementations should take de-veloper knowledge into account—ideally, a developer wouldnot be able to use an optimization without demonstrating thatthey understand it. How can we create an effective interfacefor this that would not be gameable or too onerous to use?

REFERENCES

[1] F. Benz, A. Hildebrandt, and S. Hack, “A dynamic pro-gram analysis to find floating-point accuracy problems,” inProceedings of the 33rd ACM SIGPLAN Conference onProgramming Language Design and Implementation (PLDI),2012.

[2] A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem,C. Henri-Gros, A. Kamsky, S. McPeak, and D. Engler, “A fewbillion lines of code later: Using static analysis to find bugsin the real world,” Commuications of the ACM, vol. 53, no. 2,pp. 66–75, February 2010.

[3] R. Bryant and D. O’Hallaron, Computer Systems: A Program-mer’s Perspective, 3rd ed. Pearson, 2015.

[4] M. Fagan, J. Schlachter, K. Yoshii, S. Leyffer, K. Palem,M. Snir, S. M. Wild, and C. Enz, “Overcoming the powerwall by exploiting inexactness and emerging cots architecturalfeatures: Trading precision for improving application quality,”in Proceedings of the 9th IEEE International System-on-ChipConference (SOCC), September 2016.

[5] K. Hoste and L. Eeckhout, “Cole: Compiler optimization levelexploration,” in Proceedings of the 6th Annual IEEE/ACM In-ternational Symposium on Code Generation and Optimization(CGO), 2008.

[6] IEEE Floating Point Working Group, “IEEE standard forbinary floating-point arithmetic,” ANSI/IEEE Std 754-1985,1985.

[7] ——, “IEEE standard for floating-point arithmetic,” IEEE Std754-2008, pp. 1–70, Aug 2008.

[8] M. O. Lam, J. K. Hollingsworth, and G. Stewart, “Dynamicfloating-point cancellation detection,” Parallel Computing,vol. 39, no. 3, pp. 146–155, 2013.

[9] S. Mittal, “A survey of techniques for approximate comput-ing,” ACM Computing Surveys, vol. 48, no. 4, Mar. 2016.

[10] F. C. Moon, Chaotic and Fractal Dynamics: An Introductionfor Applied Scientists and Engineers. John Wiley and Sons,Inc., 1992.

[11] P. Panchekha, A. Sanchez-Stern, J. R. Wilcox, and Z. Tatlock,“Automatically improving accuracy for floating point expres-sions,” in Proceedings of the 36th ACM SIGPLAN Confer-ence on Programming Language Design and Implementation(PLDI), 2015.

[12] J. Regehr, “Embedded in academia,” https://blog.regehr.org/,a long running series of posts on undefined behavior has beenwidely read.

[13] C. Rubio-Gonzalez, C. Nguyen, H. D. Nguyen, J. Demmel,W. Kahan, K. Sen, D. H. Bailey, C. Iancu, and D. Hough,“Precimonious: Tuning assistant for floating-point precision,”in Proceedings of the International Conference on HighPerformance Computing, Networking, Storage and Analysis(Supercomputing), 2013.

[14] X. Wang, N. Zeldovich, M. F. Kaashoek, and A. Solar-Lezama, “Towards optimization-safe systems: Analyzing theimpact of undefined behavior,” in Proceedings of the 24thACM Symposium on Operating Systems Principles (SOSP),November 2013.

1/3donotfindNaN

MaximallySuspicious

Page 29: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

Caveats

• Participantsarenotarandomsample

• Anonymityandself-reporting

–Wecannotbesurewehavehitourrecruitment

goals

• Confusion/lackoftimeforparticipant

– Surveydesignwasiteratedbasedonfeedback• Only199+52datapoints

– Buttheseareusers• …

29

Page 30: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

PotentialActions

• HPCcommunityshouldsowsuspicion

–MuchlikePLandcompilerscommunitydidwith

undefinedbehaviorinC

• HPCcommunityshoulddevelopbettertraining

30

Page 31: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

PotentialActions

• Betterstatic/dynamicanalysistools

– Workinprogress

• BlurringtheboundarybetweenFPandarbitrary

precisionarithmetic

– Workinprogress

• Developerknowledge-limitedaccesstosoftware

andhardwareoptimizations

– “AchievementUnlocked”

– Workinprogress

31

Page 32: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

AWorkinProgress:FPSpy

• User-levelshimthatslidesunderneathexisting,unmodifiedapplicationbinary

– Getsoutofthewayonconflictwithapplication

• UsesFPhardwarefeatures,LinuxFPinterfaces,and

debugger-styletechniquestotrackissues

– Aggregatemode:

• FPconditioncodessetatanypointduringexecution

• Fast– zerooverhead

– Individualmode:

• Instruction-leveltrackingofFPconditioncodes

• Slower

• Current:applyingFPSpy andothertoolstostudyexisting,

unmodifiedapplications

– Doesdeveloperconfusionasmeasuredinpresentstudy

manifestincodesincurrentuse?

32

Page 33: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

AWorkInProgress:FPKernel

• Floatingpointexceptionshavemuchlower

latencyandoverhead inakernel-onlymodel

– LikeourHybridRun-Time(HRT)schemeandthe

NautilusKernelFrameworkthatsupportsit

• CombinefixedprecisionhardwareFPand

arbitraryprecisionsoftwareFPtocreatesimple

arithmeticmodelforprogrammer

– FPexceptionstriggertransitiontosoftwareFP

– NaN boxing/signalingNaN forvalues

– MademorepracticalbyfastFPexceptions

33

Page 34: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

34

0

5000

10000

15000

20000

25000

30000

R415-U R415-K R815-U R815-K KNL-U KNL-K

Cycles

Machine-User/Kernel

MinimumTimetoFloatingPointExceptionHandler

LinuxUser-levelVersusNautilusKernel-level

Min: kernel-levelis6.5-30xfaster

Median: kernel-levelis3-30xfaster

Variance: kernel-levelis17-95xbetter

Page 35: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

PaperinaNutshell:Not Really• Targetedsurvey

– AimedatpractitionerslikelytouseFP

– Quizzesforcore,optimization,andsuspicionofresults

– Firststudyofthiskind

• Participantsdoonlyslightlybetterthanchanceoncoreconcepts

– …anddon’tknowit

– Somefactorsmitigate,butnoneparticularlywell

• Participantsdonotunderstandoptimizationconcepts

– …anddoknowit

• Participantslesssuspiciousthantheyshouldbe

– …butsimilartostudentsinasophomorecourse

• Maybesystemssoftwarecandosomethingaboutit

35

Page 36: Do Developers Understand IEEE Floating Point? · Peter Dinda ConorHetland Prescience Lab Department of EECS Northwestern University pdinda.org presciencelab.org Survey Available Here,

ForMoreInformation

• PeterDinda

[email protected]

– http://pdinda.org

• Conor Hetland

[email protected]

• Takethesurvey

– http://presciencelab.org/float

• PrescienceLab

– http://presciencelab.org

• Acknowledgements

– NSF,DOE

36