[Bug] Inconsistent description of GPU/CPU crossover in Batch Size Sweep section
Area
Book — Volume I
Location
https://harvard-edge.github.io/cs249r_book_dev/mlsysim/tutorials/04_starving_the_gpu.html , 05
The Problem
The tutorial states:
"Watch the crossover: at small batch sizes the GPU is the bottleneck (100% utilization). As batch size grows, CPU preprocessing time grows linearly while GPU step time grows sub-linearly. Eventually Wall 9 becomes the binding constraint and GPU utilization drops."
However, the table shows:
| Batch | GPU Step | CPU Xform | Binding | GPU Util |
|---|---|---|---|---|
| 32 | 2.20 ms | 8.00 ms | Transformation | 27.5% |
| 64 | 3.88 ms | 16.00 ms | Transformation | 24.2% |
| ... | ... | ... | ... | ... |
From batch_size=32 to 1024:
Bindingis alwaysTransformation(CPU bottleneck)- GPU utilization stays around 21-27% (never approaches 100%)
The Issue
The description describes a crossover scenario where the bottleneck shifts from GPU to CPU as batch size increases. But the data shows no crossover at all — CPU is the bottleneck across the entire sweep range. The "small batch sizes where GPU is the bottleneck" are simply not present in the table.
Suggested Fix
Either:
- Update the text to accurately describe the data (e.g., "At all batch sizes shown, CPU transformation is the binding constraint...")
- Extend the sweep to include smaller batch sizes (e.g., 1, 2, 4, 8, 16) where the GPU→CPU crossover actually occurs, and update the table accordingly
Expected Behavior
No response
Environment (TinyTorch bugs only)
No response
Source: harvard-edge/cs249r_book