PPoPP Experiments
Design the evaluation to clear PPoPP's twin bar: the contribution must be correct under
concurrency and measurably scalable. A speedup with no correctness argument, or a correctness
proof with no scaling data, each fails half the venue. Reviewers are parallel-systems experts who
will interrogate the baseline, the machine, and the variance before they believe a number.
Match evidence to the claim
| Claim shape |
Evidence PPoPP expects |
Common failure it catches |
| A lock-free/wait-free structure |
Throughput vs. thread count under varied contention; a linearizability/progress argument; memory-reclamation overhead |
Single contention level; "no race seen" instead of an argument |
| A parallel runtime/scheduler |
Overhead vs. sequential; strong+weak scaling on real workloads; load-balance behavior |
Microbenchmarks only; no real application |
| A GPU/accelerator technique |
Speedup over a strong GPU baseline; occupancy/divergence analysis; transfer costs counted |
Ignoring host-device transfer; a weak baseline kernel |
| A parallel algorithm |
Scaling on real inputs; NUMA/locality effects; comparison to the best known implementation |
One input; a naive baseline |
| A memory-model / race tool |
Soundness/coverage claims; runtime overhead; false-positive/negative characterization |
Overhead unmeasured; no ground truth |
The scalability story
- Show the curve. Report performance as a function of thread/core count, not one configuration.
The interesting information is the shape: linear region, saturation point, collapse.
- Distinguish strong vs. weak scaling and label which you show. Strong scaling (fixed problem,
more cores) and weak scaling (problem grows with cores) answer different questions; conflating
them is a classic PPoPP tell.
- Sweep the topology. Cross-socket and NUMA effects, thread pinning, and (for GPUs) occupancy
and divergence often dominate; a single-socket-only result invites "what about NUMA?"
- Count the hidden costs. Memory reclamation, host-device transfer, allocation, and scheduling
overhead belong inside the reported numbers, not in a footnote.
Correctness under concurrency
- Provide an argument, not just testing: linearizability (with linearization points),
lock-freedom/wait-freedom (progress), or a checked property. "Passed a stress test" bounds
confidence but does not establish correctness.
- Name the memory model you assume (C/C++11 atomics, the GPU model, hardware TSO) and show your
synchronization is correct under it, not just under sequential consistency.
- If you use a model checker or race detector to support the claim, report its configuration and
what it covers.
Baselines that survive scrutiny
- Compare to the strongest real competitor, at the competitor's best settings, on the same
machine — not to your own unoptimized code and not to a strawman.
- Rebuild and re-tune baselines yourself where feasible; citing a competitor's paper number
measured on different hardware is not a fair comparison.
- If you are the first at something, construct the most credible reasonable baseline and justify it.
Measurement hygiene
[Repeats] multiple runs; report median/mean with variance (error bars / percentiles)
[Warm-up] discard JIT/cache/allocator warm-up; state the steady-state protocol
[Pinning] pin threads to cores; state the topology and the pinning policy
[Isolation] quiescent machine; no co-tenants; disable turbo/frequency scaling or report it
[Inputs] real workloads plus targeted microbenchmarks; state sizes and sources
[Provenance] exact CPU/GPU, socket/NUMA layout, memory, compiler and flags, OS
A single-run bar chart with no error bars, on an unstated machine, is the evaluation a PPoPP
reviewer trusts least.
Anticipate the rebuttal questions at design time
The two questions PPoPP reviewers ask most — "does it still scale at higher core counts / on
another GPU?" and "how does it compare to baseline X?" — cannot be answered in the short
rebuttal window if the runs were never made. Pre-run the larger core sweep and the obvious
alternative baseline before submission so the numbers are already in hand (see
ppopp-author-response).
Output format
[Twin bar] correctness argument present? scalability curve present? both required
[Scaling] strong/weak labeled, core sweep, NUMA/GPU topology, hidden costs counted? yes/no
[Correctness] hazard + argument (linearizability/progress) under a named memory model? yes/no
[Baselines] strongest real competitor, same machine, tuned? yes/no
[Hygiene] repeats+variance, warm-up, pinning, isolation, provenance? list gaps
[Rebuttal pre-runs] higher core count + alternative baseline already measured? yes/no
Source: brycewang-stanford/Awesome-Journal-Skills → PPoPP-Skills/skills/ppopp-experiments/SKILL.md
1---2name: ppopp-experiments3description: Use when designing or auditing a PPoPP paper's evaluation, covering the twin bar of concurrency correctness and measured scalability — speedup curves, strong vs weak scaling, core/thread sweeps, NUMA and GPU effects, contention microbenchmarks plus real workloads, variance and measurement hygiene, and honest strong baselines.4---5
6
7# PPoPP Experiments
8
9Design the evaluation to clear PPoPP's **twin bar**: the contribution must be **correct under
10concurrency** and **measurably scalable**. A speedup with no correctness argument, or a correctness
11proof with no scaling data, each fails half the venue. Reviewers are parallel-systems experts who
12will interrogate the baseline, the machine, and the variance before they believe a number.
13
14## Match evidence to the claim
15
16| Claim shape | Evidence PPoPP expects | Common failure it catches |
17|---|---|---|
18| A lock-free/wait-free structure | Throughput vs. thread count under varied contention; a linearizability/progress argument; memory-reclamation overhead | Single contention level; "no race seen" instead of an argument |
19| A parallel runtime/scheduler | Overhead vs. sequential; strong+weak scaling on real workloads; load-balance behavior | Microbenchmarks only; no real application |
20| A GPU/accelerator technique | Speedup over a strong GPU baseline; occupancy/divergence analysis; transfer costs counted | Ignoring host-device transfer; a weak baseline kernel |
21| A parallel algorithm | Scaling on real inputs; NUMA/locality effects; comparison to the best known implementation | One input; a naive baseline |
22| A memory-model / race tool | Soundness/coverage claims; runtime overhead; false-positive/negative characterization | Overhead unmeasured; no ground truth |
23
24## The scalability story
25
26- **Show the curve.** Report performance as a function of thread/core count, not one configuration.
27 The interesting information is the *shape*: linear region, saturation point, collapse.
28- **Distinguish strong vs. weak scaling** and label which you show. Strong scaling (fixed problem,
29 more cores) and weak scaling (problem grows with cores) answer different questions; conflating
30 them is a classic PPoPP tell.
31- **Sweep the topology.** Cross-socket and NUMA effects, thread pinning, and (for GPUs) occupancy
32 and divergence often dominate; a single-socket-only result invites "what about NUMA?"
33- **Count the hidden costs.** Memory reclamation, host-device transfer, allocation, and scheduling
34 overhead belong *inside* the reported numbers, not in a footnote.
35
36## Correctness under concurrency
37
38- Provide an **argument**, not just testing: linearizability (with linearization points),
39 lock-freedom/wait-freedom (progress), or a checked property. "Passed a stress test" bounds
40 confidence but does not establish correctness.
41- Name the **memory model** you assume (C/C++11 atomics, the GPU model, hardware TSO) and show your
42 synchronization is correct under it, not just under sequential consistency.
43- If you use a model checker or race detector to support the claim, report its configuration and
44 what it covers.
45
46## Baselines that survive scrutiny
47
48- Compare to the **strongest real competitor**, at the competitor's best settings, on the same
49 machine — not to your own unoptimized code and not to a strawman.
50- Rebuild and re-tune baselines yourself where feasible; citing a competitor's paper number
51 measured on different hardware is not a fair comparison.
52- If you are the first at something, construct the most credible reasonable baseline and justify it.
53
54## Measurement hygiene
55
56```text
57[Repeats] multiple runs; report median/mean with variance (error bars / percentiles)
58[Warm-up] discard JIT/cache/allocator warm-up; state the steady-state protocol
59[Pinning] pin threads to cores; state the topology and the pinning policy
60[Isolation] quiescent machine; no co-tenants; disable turbo/frequency scaling or report it
61[Inputs] real workloads plus targeted microbenchmarks; state sizes and sources
62[Provenance] exact CPU/GPU, socket/NUMA layout, memory, compiler and flags, OS
63```
64
65A single-run bar chart with no error bars, on an unstated machine, is the evaluation a PPoPP
66reviewer trusts least.
67
68## Anticipate the rebuttal questions at design time
69
70The two questions PPoPP reviewers ask most — **"does it still scale at higher core counts / on
71another GPU?"** and **"how does it compare to baseline X?"** — cannot be answered in the short
72rebuttal window if the runs were never made. Pre-run the larger core sweep and the obvious
73alternative baseline *before* submission so the numbers are already in hand (see
74`ppopp-author-response`).
75
76## Output format
77
78```text
79[Twin bar] correctness argument present? scalability curve present? both required
80[Scaling] strong/weak labeled, core sweep, NUMA/GPU topology, hidden costs counted? yes/no
81[Correctness] hazard + argument (linearizability/progress) under a named memory model? yes/no
82[Baselines] strongest real competitor, same machine, tuned? yes/no
83[Hygiene] repeats+variance, warm-up, pinning, isolation, provenance? list gaps
84[Rebuttal pre-runs] higher core count + alternative baseline already measured? yes/no
85```
86
87---
88
89**Source:** [`brycewang-stanford/Awesome-Journal-Skills`](https://github.com/brycewang-stanford/Awesome-Journal-Skills) → `PPoPP-Skills/skills/ppopp-experiments/SKILL.md`