Ch31 Discussion
Discussion Guide
Warm-up (think–pair–share, 5 min). "Your program ran twice as fast on last year's new laptop, with no code changes. Could you count on that today? Why not?" Surfaces the free-lunch story and the Moore/Dennard distinction from lived experience.
Main discussion (15–20 min). 1. The tyranny of the serial fraction. Put $S_{\max} = 1/(1-p)$ on the board. Ask: "A vendor sells you a 1000-core machine. Your code is 95% parallel. What's the most it can do for you, and how many of those cores are basically wasted at the ceiling?" (Answer: 20×; the vast majority wasted.) Use it to make the threshold-concept reframe land: the useful question is about the serial 5%, not the 1000 cores. 2. Amdahl vs Gustafson — same fact, two conclusions. Give the class 5% serial and ask two subgroups to argue: one that "parallelism barely helps" (Amdahl), one that "parallelism scales beautifully" (Gustafson). Reveal that both are right because they assume different things about problem size. This is the discussion that cements the pair-of-questions framing. 3. Read a sick scaling curve. Show Case Study 1's two time tables. "Both stall below 10×. Same fix?" Let them argue, then introduce Karp–Flatt: constant e (fix the algorithm) vs rising e (fix the communication). A concrete taste of why the diagnosis, not just the speedup, matters.
Group activity (10 min). In pairs, students write the one-page parallelization plan for the heat solver (Case Study 2 template): profiled serial fraction → Amdahl ceiling → the data-parallel hot spot and the sequential dependency → chosen model and target core count → how they'll check it. Collect two or three and critique against §31.5. Tell them to keep it — Chapters 32–34 are graded against exactly this plan.
Exit ticket. "A code is 98% parallel. (a) What's its Amdahl ceiling? (b) It gets 25× on 64 cores — what's its efficiency? (c) Is that a fixed-serial-fraction problem or an overhead problem, and what one number would you compute to decide?" (Answers: (a) 50×; (b) 25/64 ≈ 39%; (c) compute Karp–Flatt across core counts — constant ⇒ serial fraction, rising ⇒ overhead.)