PPoPP Writing Style
Write to the PPoPP bar: a parallel-programming contribution that is correct under concurrency and
measurably scalable, presented in two-column acmart sigplan within 10 pages of text
and figures (references unlimited). The reader is a parallel-systems expert who will look for the
speedup curve, the baseline, and the correctness argument before they finish the introduction.
The first-page contract
By the end of page 1 a PPoPP reviewer should know:
- The parallel-programming problem — what breaks or stalls when you go parallel (contention, a
sequential bottleneck, poor locality, divergence, a memory-model hazard).
- The contribution — the structure, runtime, algorithm, or technique, in one sentence, framed
so parallelism is clearly the point (not a compiler pass or a proof in disguise).
- The twin claim — that it is correct under concurrency and how much it scales, with the
headline number ("linear to 96 cores," "1.8× over the state-of-the-art lock-free map at 64
threads").
- The evidence shape — the hardware, the workloads, and the baseline you beat.
A PPoPP introduction that describes a mechanism but never states a scaling number, or that promises
correctness without naming the concurrency hazard it handles, reads as unfinished.
Two-column, 10-page discipline
- The two-column
acmart layout is unforgiving of wide figures. Speedup plots, roofline charts,
and code listings must fit one column or span both deliberately — plan figure placement early.
- 10 pages of text and figures; references are free, so cite fully (all authors, no "et al.").
Do not pad the body with material that belongs in the artifact (
ppopp-supplementary).
- Recover space by cutting prose, merging plots (small multiples of a core sweep beat five separate
charts), and pushing full sweeps to the artifact — never by shrinking the template.
Structure that fits the venue
1 Introduction problem -> contribution -> twin claim (correctness + scaling) -> evidence
2 Background/Model the concurrency model, memory model, and hardware assumptions you rely on
3 Design the structure/runtime/algorithm; where parallelism is exposed and bounded
4 Correctness the argument: linearizability/progress, race-freedom, or a checked property
5 Implementation what a reader needs to reproduce: pinning, allocation, topology awareness
6 Evaluation speedup curves, core/GPU sweeps, NUMA effects, variance, baselines
7 Related work delta-first against the nearest parallel-programming competitor
8 Conclusion
Sections 4 and 6 are the twin load-bearing walls: skip the correctness argument and a reviewer
distrusts the speedups; skip the sweep and they distrust the correctness claim's relevance.
Presenting parallel performance
- Show the curve, not one point. Report throughput/speedup as a function of thread or core
count; a single configuration hides where you saturate or collapse.
- Name the baseline and the machine in the caption. "Speedup over on a
2-socket 96-core node" — an unlabeled y-axis or an unnamed baseline invites a reject.
- Show variance. Repeated runs with error bars; a bar chart of single runs reads as noise.
- Be honest about where it stops scaling. A paper that explains its saturation point is
stronger than one that hides it behind a truncated x-axis.
Language conventions
- Prefer precise concurrency vocabulary: linearizable, lock-free vs. wait-free, quiescent
consistency, false sharing, memory-order (acquire/release/seq_cst), work-span, strong vs. weak
scaling. Reviewers read imprecision here as inexperience.
- Distinguish strong scaling (fixed problem, more cores) from weak scaling (problem grows
with cores) explicitly; conflating them is a classic PPoPP tell.
- State the memory model you assume (C/C++11, the GPU model, hardware TSO) rather than leaving it
implicit.
Common PPoPP writing failures
- A mechanism with no number — design described lovingly, scaling never quantified.
- A number with no machine — speedups whose hardware and baseline are unstated.
- Correctness by testing — "no data race observed" without an argument over interleavings.
- Strawman baselines — beating your own unoptimized code instead of the real competitor.
- Wide figures that overflow the column — a two-column layout problem, caught at compile time.
Output format
[First-page contract] problem / contribution / twin claim (correctness+scaling) / evidence — all present?
[Format] two-column acmart sigplan, <=10 pages text+figs, refs full (no et al.)?
[Correctness] hazard named + argument (linearizability/progress/race-freedom)? yes/no
[Scaling] curve over cores/GPU, named baseline, named machine, variance shown? yes/no
[Cut list] prose/figures to trim or move to the artifact to hit 10 pages
Source: brycewang-stanford/Awesome-Journal-Skills → PPoPP-Skills/skills/ppopp-writing-style/SKILL.md
1---2name: ppopp-writing-style3description: Use when drafting or tightening a PPoPP paper's prose and structure, covering the two-column acmart sigplan layout, the 10-page text+figures budget, stating the concurrency-correctness and scalability claim up front, presenting speedup curves and core sweeps, and the parallel-programming conventions PPoPP reviewers expect.4---567# PPoPP Writing Style89Write to the PPoPP bar: a parallel-programming contribution that is **correct under concurrency and10measurably scalable**, presented in **two-column `acmart` `sigplan`** within **10 pages** of text11and figures (references unlimited). The reader is a parallel-systems expert who will look for the12speedup curve, the baseline, and the correctness argument before they finish the introduction.1314## The first-page contract1516By the end of page 1 a PPoPP reviewer should know:17181. **The parallel-programming problem** — what breaks or stalls when you go parallel (contention, a19 sequential bottleneck, poor locality, divergence, a memory-model hazard).202. **The contribution** — the structure, runtime, algorithm, or technique, in one sentence, framed21 so parallelism is clearly the point (not a compiler pass or a proof in disguise).223. **The twin claim** — that it is correct under concurrency *and* how much it scales, with the23 headline number ("linear to 96 cores," "1.8× over the state-of-the-art lock-free map at 6424 threads").254. **The evidence shape** — the hardware, the workloads, and the baseline you beat.2627A PPoPP introduction that describes a mechanism but never states a scaling number, or that promises28correctness without naming the concurrency hazard it handles, reads as unfinished.2930## Two-column, 10-page discipline3132- The two-column `acmart` layout is unforgiving of wide figures. Speedup plots, roofline charts,33 and code listings must fit one column or span both deliberately — plan figure placement early.34- **10 pages of text and figures**; references are free, so cite fully (all authors, no "et al.").35 Do not pad the body with material that belongs in the artifact (`ppopp-supplementary`).36- Recover space by cutting prose, merging plots (small multiples of a core sweep beat five separate37 charts), and pushing full sweeps to the artifact — never by shrinking the template.3839## Structure that fits the venue4041```text421 Introduction problem -> contribution -> twin claim (correctness + scaling) -> evidence432 Background/Model the concurrency model, memory model, and hardware assumptions you rely on443 Design the structure/runtime/algorithm; where parallelism is exposed and bounded454 Correctness the argument: linearizability/progress, race-freedom, or a checked property465 Implementation what a reader needs to reproduce: pinning, allocation, topology awareness476 Evaluation speedup curves, core/GPU sweeps, NUMA effects, variance, baselines487 Related work delta-first against the nearest parallel-programming competitor498 Conclusion50```5152Sections 4 and 6 are the twin load-bearing walls: skip the correctness argument and a reviewer53distrusts the speedups; skip the sweep and they distrust the correctness claim's relevance.5455## Presenting parallel performance5657- **Show the curve, not one point.** Report throughput/speedup as a function of thread or core58 count; a single configuration hides where you saturate or collapse.59- **Name the baseline and the machine in the caption.** "Speedup over <named competitor> on a60 2-socket 96-core node" — an unlabeled y-axis or an unnamed baseline invites a reject.61- **Show variance.** Repeated runs with error bars; a bar chart of single runs reads as noise.62- **Be honest about where it stops scaling.** A paper that explains its saturation point is63 stronger than one that hides it behind a truncated x-axis.6465## Language conventions6667- Prefer precise concurrency vocabulary: linearizable, lock-free vs. wait-free, quiescent68 consistency, false sharing, memory-order (acquire/release/seq_cst), work-span, strong vs. weak69 scaling. Reviewers read imprecision here as inexperience.70- Distinguish **strong scaling** (fixed problem, more cores) from **weak scaling** (problem grows71 with cores) explicitly; conflating them is a classic PPoPP tell.72- State the memory model you assume (C/C++11, the GPU model, hardware TSO) rather than leaving it73 implicit.7475## Common PPoPP writing failures7677- **A mechanism with no number** — design described lovingly, scaling never quantified.78- **A number with no machine** — speedups whose hardware and baseline are unstated.79- **Correctness by testing** — "no data race observed" without an argument over interleavings.80- **Strawman baselines** — beating your own unoptimized code instead of the real competitor.81- **Wide figures that overflow the column** — a two-column layout problem, caught at compile time.8283## Output format8485```text86[First-page contract] problem / contribution / twin claim (correctness+scaling) / evidence — all present?87[Format] two-column acmart sigplan, <=10 pages text+figs, refs full (no et al.)?88[Correctness] hazard named + argument (linearizability/progress/race-freedom)? yes/no89[Scaling] curve over cores/GPU, named baseline, named machine, variance shown? yes/no90[Cut list] prose/figures to trim or move to the artifact to hit 10 pages91```9293---9495**Source:** [`brycewang-stanford/Awesome-Journal-Skills`](https://github.com/brycewang-stanford/Awesome-Journal-Skills) → `PPoPP-Skills/skills/ppopp-writing-style/SKILL.md`