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 uses the mandatory repository-pinned PRIMME 3.2.3 eigensolver.
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. Measurements from different 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. The
selection algorithm
explains how output-side spin closure affects the target count.
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 |
T1 wall / RSS |
T8 wall / RSS, speedup |
T16 wall / RSS, speedup |
|---|---|---|---|
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 took about 1.9-2.1 seconds. 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.
Large-Cluster Workloads#
Completed September 2026 Ce:YPO4 workloads used an Intel Xeon E5-1650 (Sandy Bridge, 6 cores/12 hardware threads, AVX, 128 GiB RAM). The older atomic benchmark used an E5-2680 v4 (Broadwell, 14 cores/28 threads, AVX2). These are different hosts and campaigns.
Case |
Reference AOs / retained MOs |
Physical determinants / |
Scalar / SO roots |
DIAGPT native wall |
|---|---|---|---|---|
Ce:YPO4 RHF-based SCI |
750 / 750 |
753 / 1142 |
7 / 14 |
9676.34 s |
Ce:YPO4 RHF-based SCI |
1052 / 1052 |
476 / 1236 |
12 / 24 |
27953.26 s |
Ce:YPO4 SA-CASSCF |
1470 / 1300 |
12 / 12 |
12 / 24 |
3839.64 s |
Ce3+ atomic benchmark on E5-2680 v4 |
232 / 232 |
5104 / 10701 |
12 / 24 |
3303.19 s at 14 threads |
The cluster exports used materialized DF-expanded integrals with 20 selected orbitals. The 1470-AO reference retained 1300 MOs for downstream work. Its DF export took 7257 s; native-stage peak RSS was 100.54 GB and sampled swap reached 38.07 GB. The two RHF-based SCI cases used eight off-diagonal threads; the small 12-row CAS used one. A completed run does not make these timings transferable to another model space or memory configuration.
The measurement table separates AO, MO, physical-determinant and adapted-model counts. Empty CSV fields are unavailable measurements, not zeros. The table describes completed workloads, not a controlled comparison of release versions.
Determinant And Orbital Scaling#
DIAGPT builds up to ncf*(ncf-1)/2 off-diagonal pairs. At fixed orbital data and
similar determinant connectivity, linear diagonal-PT2 and quadratic
off-diagonal terms are useful planning approximations. Rejection rules,
adjacency, roots and orbital occupations affect the actual work per pair.
For the two RHF-based SCI cases above:
Quantity, 750 → 1052 MOs |
Ratio |
|---|---|
Stored values in the four selected ERI families |
2.36967 |
|
1.08231 |
Potential off-diagonal pairs |
1.17148 |
Measured diagonal PT2 time |
2.92999 |
Measured off-diagonal time |
2.85909 |
Measured native DIAGPT time |
2.88882 |
ERI-value ratio × pair-count ratio |
2.77601 |
The pair-weighted integral-count estimate is close to this measured change, but the two runs also changed roots, occupied partition and build settings. Ce750 used Release/GCC 15.3; Ce1052 used bounds-enabled RelWithDebInfo/GCC 15.1 with IPO disabled. Swap also differed. This is not a measured universal power law or evidence of ideal thread scaling.
At fixed core and selected counts, the four packed ERI families grow
asymptotically as M²; full J/K slices grow as M³. If occupied and virtual
spaces grow together, the CV-CV family instead has fourth-power growth.
See block sizes before extrapolating.
Small Model Spaces And Threads#
DIAGPT’s off-diagonal OpenMP region is enabled only when
ncf - 1 >= 4*T, with requested thread count T. Otherwise that region uses one
thread. For ncf=12 and T=10, sequential off-diagonal work is expected.
Other stages and numerical libraries have their own threading behavior.
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.
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.