Exercises — Wafer-scale engines (Cerebras-style)
Before we start, one symbol contract so nothing appears un-earned:
L1 — Recognition
Problem 1.1 (L1)
A silicon wafer is normally cut into hundreds of small chips. State, in one sentence, what a wafer-scale engine does differently, and name the single trick that makes it physically possible.
Recall Solution 1.1
What: A WSE keeps the entire wafer as one single chip instead of dicing it, so all cores stay connected by fast on-silicon wires. The enabling trick: adding extra metal wiring across the scribe lines (the dicing streets), so the normally-separate reticle fields become one connected mesh. Why it matters: without wiring across scribe lines you would just have many chips sitting on one uncut wafer — not a single chip. That one fabrication step is what turns "many chips" into "one chip."
Problem 1.2 (L1)
Match each item to the boundary a data byte does not have to cross inside a WSE that it would cross in a GPU cluster: (a) package pins, (b) PCB traces, (c) inter-server network link, (d) an on-core register.
Recall Solution 1.2
A WSE keeps traffic on silicon, so it avoids (a) package pins, (b) PCB traces, and (c) the inter-server network link. It does not avoid (d) — an on-core register is inside the core; every architecture uses those. Why: the parent's whole argument is that each boundary (core→pins→PCB→network) is "slower, hotter, hungrier" than on-chip wire. The WSE deletes the outer boundaries, not the innermost one.
L2 — Application
Problem 2.1 (L2)
A process has defect density defects/mm². Using the Poisson yield model , compute the yield for (a) a small die mm² and (b) a full wafer die mm². Interpret each.
Recall Solution 2.1
Why this formula: defects land randomly and independently, so the count in a fixed area is Poisson with mean . A die works only with zero killing defects, and .
(a) Small die: . About of these dies work — routine for a small chip; you throw away the rest.
(b) Full wafer die: . This is effectively zero. A monolithic defect-free wafer never happens — which is exactly why WSEs abandon "zero defects" and use redundancy instead. What it looks like: see the yield-vs-area curve below — it collapses long before wafer scale.

Problem 2.2 (L2)
A job needs working cores. The process is expected to leave a fraction of built cores dead. How many cores must be built?
Recall Solution 2.2
Why over-provision: we cannot demand a perfect wafer, so we build spares and reroute around dead cores. We need at least survivors out of built: Plug in: So build ≈ 842,106 cores (round up — you can't build a fraction of a core). What it means: the over-provision factor is — about extra hardware buys you tolerance to a death rate.
L3 — Analysis
Problem 3.1 (L3)
Two options deliver working cores. Option A: one wafer with over-provision (from 2.2, needs built). Option B: dice the wafer into small dies of mm² at yield (from 2.1a), each containing cores. How many small dies must be built in Option B to yield working cores' worth, and what fraction of built silicon is wasted in each option?
Recall Solution 3.1
Option A (wafer): built , needed . Wasted-core fraction:
Option B (diced): working cores per built die ? No — careful. A die is either all good or all thrown away (a killing defect kills the whole die). So a good die gives cores; a bad die gives . Fraction of dies good . Dies needed to be built: Wasted-die fraction .
Analysis: Option A wastes ~ of silicon; Option B wastes ~. Why the gap: in a diced flow a single defect discards cores at once. In the wafer flow a defect kills only the one core it lands in, because the mesh reroutes around it. Fine-grained redundancy is far more silicon-efficient — this is the deep reason wafer-scale can pay off despite sounding wasteful.
Problem 3.2 (L3)
On a mesh at GHz (1 hop = 1 ns), compare average-case and worst-case latency for a message between two cores. Assume traffic is nearest-neighbour on average.
Recall Solution 3.2
Why hop-count = latency: each core-to-core link is one clock, so latency ≈ (number of hops) × (cycle time). At GHz, cycle ns.
- Neighbour (average local traffic): hop ns.
- Worst case, corner to corner: in a mesh you travel along rows then columns, so hops hops ns .
What it looks like: the red path below is the corner-to-corner route; almost all real traffic uses the tiny local hops instead. Interpretation: even the worst on-wafer case (~s) matches the best inter-server network case, and the typical case (1 ns) beats it by ~1000×. Locality is everything.

L4 — Synthesis
Problem 4.1 (L4)
A WSE has cores, each pushing GB/s to neighbours. (a) Compute total on-wafer bandwidth. (b) A GPU cluster link tops out at GB/s per link. How many such GPU links equal the WSE's aggregate? (c) In one sentence, why is aggregate bandwidth additive on a mesh?
Recall Solution 4.1
(a) Why sum: all mesh links run in parallel, so aggregate bandwidth adds:
(b) Equivalent GPU links: So one WSE's internal fabric ≈ ~944 top-end GPU links' worth of bandwidth, all on one piece of silicon.
(c) Why additive: because the links are physically separate wires operating simultaneously — no shared bottleneck channel — so their capacities stack instead of competing.
Problem 4.2 (L4)
A model has GB of parameters. Each core holds KB of SRAM. (a) Can it fit? (b) What is the minimum number of cores just to store it, ignoring compute? (c) Why is the "model must fit in one core" intuition wrong?
Recall Solution 4.2
(a)/(b) Why aggregate: capacity is the sum over all cores, not per core. Minimum cores to store GB: With cores available, it fits with a little room to spare — which is exactly why the " GB on-chip SRAM" and " cores" numbers from the parent are matched by design.
(c) Why the intuition is wrong: the model is sharded across all cores; no single core ever holds it. The mesh stitches partial results together, so the relevant capacity is the distributed total, not the tiny per-core SRAM.
L5 — Mastery
Problem 5.1 (L5)
Design decision: your model has zero activations after ReLU (sparsity ). On dense hardware every multiply runs; on a WSE, multiply-by-zero is skipped. (a) What is the ideal speedup from sparsity? (b) If skipping incurs a overhead on the remaining work (indexing nonzeros), what is the effective speedup? (c) State when this hardware advantage disappears.
Recall Solution 5.1
(a) Why skip zeros: a multiply by produces and wastes time and energy. If a fraction of activations are zero, only of the work remains. Ideal speedup vs dense:
(b) With overhead: the nonzero work is , inflated by the indexing cost, i.e. . Effective work fraction . So overhead trims down to about — still a real win.
(c) When it disappears: if sparsity is low (few zeros), and overhead can even make it slower. Also, if the sparsity is unstructured but the hardware needed structured patterns, the skipping machinery stalls. WSEs shine on unstructured sparsity, which dense GPUs struggle to exploit — see Sparsity in Neural Networks.
Problem 5.2 (L5)
Steel-man against yourself: propose one workload where a WSE is the wrong choice, and justify with a bandwidth/locality argument tied to the mesh.
Recall Solution 5.2
A bad-fit workload: a tiny model with a huge streaming dataset that does all-to-all communication (e.g. certain graph/embedding-lookup jobs where every core must reach arbitrary far-away data every step). Why the mesh loses here:
- The mesh's advantage is nearest-neighbour locality — local hops are ~1 ns. All-to-all forces average paths near the corner-to-corner ~s, erasing the locality win (Problem 3.2).
- "No external DRAM" is fatal if the dataset exceeds the ~ GB on-wafer SRAM: you now stream from off-wafer anyway, hitting the very interconnect wall the WSE was built to avoid. Conclusion: WSEs win when model + working set fit on-wafer and traffic is mostly local/streaming. Break either assumption and off-chip DRAM plus a conventional cluster can beat it.
Recall One-line self-test
Why is the wafer-scale over-provision factor tiny (~) while a diced flow wastes ~ at the same defect density? ::: Because the wafer flow's unit of redundancy is a single core (a defect kills one core, the mesh reroutes), whereas the diced flow's unit is a whole die (one defect scraps ~1000 cores).