Ch30 Discussion

Discussion Guide

Opening prompt (5 min). "You can double your program's speed by typing three characters and nothing else. What's the catch?" Elicit -O3; then push: "Is there a version of that where the answer changes?" Steer to -Ofast.

Discussion prompts. 1. Is it ever ethical to publish a result from an -Ofast build? Under what recorded conditions? What would you need to show a reviewer? (Connects §30.1, §30.4, and scientific integrity.) 2. Case Study 30.1's group wasn't lying — the stopwatch really said 24×. Where exactly did the dishonesty enter? Is "misattribution" a kind of dishonesty even when every number is real? 3. Bit-exact reproducibility vs agreement-to-tolerance: which should a computational-science field demand, and who decides the tolerance? Give a domain where bit-exactness genuinely matters. 4. -march=native gives free speed but breaks portability. Is a compiler's default (conservative, portable) the right default for scientists, or should HPC users get a faster default and accept the footgun? Defend a position. 5. Whose responsibility is a non-reproducible benchmark — the author who didn't record flags, the reviewer who didn't ask, or the field whose norms didn't require it?

Mini group activity (20–25 min): "Audit the build." Hand each group a short, deliberately flawed build recipe + timing claim (variants: (a) -O0 -fcheck=all baseline vs -O3 release reported as "optimization"; (b) -Ofast release with no result validation; (c) a shipped Makefile hardcoding -march=native; (d) a cross-compiler comparison with no -fp-model set). Each group must: name the flaw, predict its concrete consequence, and rewrite the recipe + reporting so it is honest and reproducible. Groups present; the class votes on which original claim was "most misleading." Debrief onto the §30.4 recording checklist. This activity rehearses exactly the skill Case Study 30.1 assesses.