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.