Benchmarks And Scaling Guidance#
This page turns accepted MPPT benchmark campaigns into conservative operating guidance. Timings are not portable performance guarantees: chemistry, model space, compiler, libraries, CPU topology, affinity, and storage all matter. Measured values and planning estimates are kept separate below.
Current Recommendations#
For the measured Intel i7-11700 host:
Stage |
Recommended setting |
Evidence |
|---|---|---|
PySCF selected-route producer |
8 threads |
Fastest for both 128- and 232-orbital cases; 16-way SMT regressed |
CIPSIXX |
16 threads for minimum wall, 8 for lower memory |
T16 was fastest, but scaling beyond T8 was modest |
DIAGPT |
PRIMME with 16 threads for minimum wall, 8 for efficiency |
T16 was fastest; the off-diagonal Heff build dominated |
HEFFSO |
oneMKL sparse with 8 threads |
Fastest measured backend/thread combination and about 280 MiB below Fortran sparse RSS |
DIAGPT now always uses the mandatory repository-pinned PRIMME 3.2.3 eigensolver. Historical LAPACK measurements below are retained only to explain the backend decision; they are not an available runtime configuration.
Measurement Contract#
The primary campaign was i7-a73a799-20260818T055842Z at MPPT commit
a73a799eb7e230785390e05f2a085934548a55ec, source tree
ebe13e6fdeb424d2af473bcd7d4393045fb53eb4, and CIPSIXX commit
617ae8ba23746b679ec9563a482117a49905b207.
Host: Intel i7-11700, 8 physical cores and 16 logical CPUs.
Build: GCC/GFortran 13.3.0 Release,
-O3,-march=rocketlake,-mtune=rocketlake, PRIMME 3.2.3, and oneMKL dense/sparse support.Affinity: T1 on CPU 0, T8 on CPUs 0-7, and T16 on CPUs 0-15.
Execution: cells ran sequentially; no benchmark workloads overlapped.
Host policy:
intel_pstate,powersavegovernor,EPP=performance, and turbo enabled.Statistics: one accepted measurement per cell, so no variance or error bars are claimed.
Speedup: always uses the measured T1 cell for the same case and backend. Historical campaigns are not mixed into these ratios.
Completion: 30 cells passed and 3 conditional target-50000 cells were skipped. Blank skipped-cell metrics mean unavailable, not zero.
The compact selected-route producer checks also verified every required compact
dataset and the absence of int2e_full in all six PySCF outputs.
Measured PySCF Producer Scaling#
Both cases used 20 selected orbitals.
Case |
T1 wall / RSS |
T8 wall / RSS, speedup |
T16 wall / RSS, speedup |
|---|---|---|---|
Pr128 |
111.189 s / 1987.8 MiB |
58.399 s / 2460.9 MiB, 1.904x |
93.231 s / 2633.5 MiB, 1.193x |
Ce232 |
5420.064 s / 14947.4 MiB |
2260.848 s / 15563.9 MiB, 2.397x |
2606.770 s / 15962.9 MiB, 2.079x |
T8 was fastest for both systems. More logical threads increased memory and made both transforms slower.
Measured CIPSIXX Scaling#
Requested target, adapted DIAGPT configuration count (ncf), and physical
determinant count are different quantities and must not be interchanged.
Target |
Actual |
Physical determinants |
T1 wall / RSS |
T8 wall / RSS, speedup |
T16 wall / RSS, speedup |
|---|---|---|---|---|---|
10,000 |
10,028 |
4,771 |
259.302 s / 1339.1 MiB |
156.434 s / 2586.3 MiB, 1.658x |
143.672 s / 3147.8 MiB, 1.805x |
20,000 |
20,068 |
10,630 |
2396.722 s / 2113.9 MiB |
1712.920 s / 4575.3 MiB, 1.399x |
1585.405 s / 5488.2 MiB, 1.512x |
Cross-thread physical determinant sets, adapted model spaces, and roots matched at every measured target. Target 50,000 was not measured: all three cells were contract-skipped because the corresponding accepted target-20,000 wall exceeded the strict 600-second launch gate. Therefore there is no measured target-50,000 wall, RSS, speedup, or scientific identity.
Measured DIAGPT Scaling#
The Ce3+ target-5000 fixture contained ncf=5141, 2,446 physical determinants,
and 12 states.
Eigensolver in measured revision |
T1 wall / RSS |
T8 wall / RSS, speedup |
T16 wall / RSS, speedup |
|---|---|---|---|
Retired LAPACK baseline |
3750.218 s / 686.5 MiB |
853.276 s / 686.4 MiB, 4.395x |
723.211 s / 686.5 MiB, 5.186x |
PRIMME |
3857.508 s / 678.3 MiB |
807.300 s / 678.3 MiB, 4.778x |
695.691 s / 678.1 MiB, 5.545x |
The off-diagonal Heff build dominated total wall. Its PRIMME-run wall was 3225.580, 624.899, and 525.422 seconds at T1/T8/T16. The eigensolver phase was about 1.9-2.1 seconds with PRIMME versus 11.2-12.0 seconds in the retired baseline. All cells returned the same 12 final energies at printed precision. T16 minimized wall, while T8 retained higher parallel efficiency.
Measured HEFFSO Scaling#
All cells requested 24 roots and completed 16 outer iterations and 157 matvecs.
Sparse backend |
T1 wall / RSS |
T8 wall / RSS, speedup |
T16 wall / RSS, speedup |
|---|---|---|---|
Fortran |
24.296 s / 1251.7 MiB |
10.519 s / 1254.6 MiB, 2.310x |
16.284 s / 1265.0 MiB, 1.492x |
oneMKL |
14.781 s / 965.2 MiB |
8.266 s / 968.4 MiB, 1.788x |
11.783 s / 977.1 MiB, 1.254x |
The maximum cross-cell energy difference was exactly 0.0 Eh. The conservative
relative residual was 2.918e-8, below primme_eps=1e-5. T16 regressed both
backends on this host.
Near-50k Planning Estimates#
The following values are derived projections, not campaign measurements.
For CIPSIXX, fitting a local power law between the measured ncf=10028 and
ncf=20068 points and evaluating it at ncf=50000 gives:
Threads |
Fitted exponent |
Estimated wall at |
|---|---|---|
1 |
3.206 |
12.42 h |
8 |
3.450 |
11.10 h |
16 |
3.461 |
10.38 h |
This two-point fit is sensitive to chemistry and selection trajectory. Use roughly 8-16 hours only as a scheduling range, not as an acceptance threshold.
For DIAGPT, scaling only the measured PRIMME off-diagonal phase by the number of
configuration pairs, n*(n-1), gives:
|
Contract status |
Pair multiplier from 5,141 |
T8 off-diagonal estimate |
T16 off-diagonal estimate |
One packed float64 triangle |
|---|---|---|---|---|---|
46,340 |
Current DIAGPT maximum |
81.263x |
14.11 h |
11.86 h |
8.00 GiB |
50,000 |
Rejected by current preflight |
94.606x |
16.42 h |
13.81 h |
9.31 GiB |
These are off-diagonal-only estimates. They exclude selection, diagonal PT2,
diagonalizations, I/O, and HEFFSO, and do not predict RSS. Current preflight
rejects DIAGPT ncf > 46340 and HEFFSO ncf > 35000; the 50,000 row is capacity
planning for a future contract, not a runnable input.
Combining the T16 CIPSIXX fit with the hypothetical DIAGPT off-diagonal value is already about 24.2 hours. A 26-28 hour working estimate and a 36-48 hour reservation leave room for omitted phases and model variation, but neither is a measured end-to-end result. On GNU Fortran, the hypothetical packed Heff is about 9.31 GiB and the packed default-logical interaction table about 4.66 GiB before adjacency, coefficients, PRIMME work arrays, and filesystem copies. A 20-30 GiB RAM budget and 30-40 GiB free-disk budget are conservative planning figures, not measured peaks.
Do not extrapolate sampled D/J subphase clocks. They are worker-seconds and are not automatically scaled totals; see DIAGPT profiling.
Historical Cross-Host Context#
The 2026-08-16 i7-11700 versus Xeon E5-2680 v4 campaign used an earlier source tree and is context only.
The matched smoke gate passed with identical reported energies. Ce100 workflow wall was 16.499 s on the i7 and 26.037 s on the Xeon WSL host.
The medium
ncf=10701DIAGPT grid was intentionally stopped before measured one-thread points. Accepted i7 walls were 7727.8/4513.3/3097.2/2807.8 seconds at T2/T4/T8/T16; accepted Xeon walls were 7084.6/4304.7/3303.2/2639.3 seconds at T4/T8/T14/T28.At matched T4 and T8, the Xeon was 1.57x and 1.39x slower. The physical-core maximum ratio was 1.067x (Xeon T14 over i7 T8); the logical-CPU maximum ratio was 0.940x (Xeon T28 over i7 T16).
The historical HEFFSO path used about one CPU core regardless of requested threads. It is not representative of the later fixed-control sparse-backend campaign above.
Because the medium grid was partial, it supports no measured T1 speedup or D/J profile conclusion. Detailed campaign evidence remains in non-published development records.
Updating This Page#
Add measured rows only from completed, accepted cells.
Keep skipped, failed, interrupted, measured, and estimated values distinct.
Never combine timings across source revisions or campaigns in one speedup.
Record hardware, affinity, compiler, dependency, and binary provenance.
Keep large artifacts and raw logs outside Git; preserve detailed decisions and paths in non-published development records.