CPU Theoretical Peak (Rpeak) Calculation in Practice
Abstract: Rpeak is the first number every HPL acceptance, capacity bid, and TOP500 submission needs. No theory dump here — three steps, real machine specs, and a ready-to-use lookup table.
1. Definition in One Line
Rpeak (theoretical peak) = max double-precision FLOPs per second per core × total physical cores.
Units: GFlops (10⁹ FLOP/s); large clusters use TFlops / PFlops.
2. Core Formula
On Intel Skylake and newer (AVX-512), each core completes 16 FMA = 32 double-precision FLOPs per clock cycle:
Full cluster:
Why 32: one FMA instruction = 1 multiply + 1 add; a 512-bit ZMM register holds 8 doubles; 8 × 2 = 16 per FMA unit; × 2 FMA pipelines = 32.
Architecture quick reference
| Architecture | ISA | DP FLOPs / cycle |
|---|---|---|
| Sandy Bridge and earlier | AVX | 16 |
| Haswell / Broadwell | AVX2 | 16 |
| Skylake+ (Xeon Scalable) | AVX-512 | 32 |
| Ice Lake / Sapphire Rapids | AVX-512 | 32 |
| AMD EPYC Zen4 | AVX-512 | 32 |
3. Worked Examples (Real Production Specs)
3.1 Single node, 104 cores @ 2.0 GHz
Dual-socket, 52 physical cores per socket, hyper-threading off:
3.2 Single node, 56 cores @ 2.7 GHz
3.3 80-node cluster (spec of 3.1)
3.4 36-node cluster
4. Three Traps: Cores and Clock
4.1 Use physical cores × sockets, not logical cores
With hyper-threading on, lscpu shows 208 logical CPUs for a 104-core box. HPL runs physical cores; use physical for Rpeak:
lscpu | grep -E "^(CPU\(s\)|Core|Socket|Model name)"
# CPU(s): 208 <- logical, includes HT
# Core(s) per socket: 52
# Socket(s): 2 <- physical = 52 × 2 = 1044.2 Use the nominal base clock, not boost
- Base 2.0 GHz: use for Rpeak
- Turbostat during a run typically shows ~2.1 GHz (boost, 100% busy)
cpupower frequency-info | grep -E "hardware limits|current CPU frequency"
# hardware limits: 800 MHz - 3.80 GHz
# current CPU frequency: 2.12 GHz (asserted by call to hardware)Acceptance uses the nominal base clock so both sides agree; measured results above base are normal headroom.
4.3 Don't use lscpu "CPU max MHz"
That is the turbo ceiling (e.g., 3.8 GHz), not the base clock. Confirm the vendor base frequency for the Model name.
5. Lookup Table (32 FLOP/cycle)
Per-node Rpeak in GFlops:
| Clock \ Cores | 56 | 64 | 96 | 104 |
|---|---|---|---|---|
| 1.8 GHz | 3225.6 | 3686.4 | 5529.6 | 5990.4 |
| 2.0 GHz | 3584.0 | 4096.0 | 6144.0 | 6656.0 |
| 2.3 GHz | 4121.6 | 4710.4 | 7065.6 | 7654.4 |
| 2.7 GHz | 4838.4 | 5529.6 | 8294.4 | 8985.6 |
| 3.0 GHz | 5376.0 | 6144.0 | 9216.0 | 9984.0 |
6. Verification
python3 -c "print(32 * 104 * 2.0, 'GFlops per node')"
# 6656.0 GFlops per nodeThe Intel Linpack N_calculator.calculator also prints Rpeak plus an efficiency table:
How Many Nodes : 1
How much memory on per node (GB) : 1536
How many cores per node : 104
What is your CPU speed per core (Ghz) : 2.0
--------------------------------------------------
The System's theoretical performance (Rpeak) in Gflops is <<<< 6656.0 Gflops >>>>
*** 80% --> 5324.80 *** 90% --> 5990.40 ***
*** 100%--> 6656.0 ***7. Takeaway
- Rpeak depends only on clock, physical cores, FLOPs/cycle (32 for AVX-512), and node count.
- Rpeak ≠ measured. Next: Estimating HPL Performance: from Theoretical Peak to Deliverable Efficiency — single-node HPL efficiency ~93%, 80-node ~78%.