0.2.7 Large-Scale Readiness Evidence¶
Status and scope¶
WP12 records bounded readiness evidence for the existing structured TET4
linear-static route. It does not add a new element or a new physical model,
and it does not claim universal one-million-DOF support. The measured source
snapshot is 4971ac4f6c1e5cff2ca48e40ca6db5e8147d0d0a; the evidence was
collected on that snapshot before the governance commit containing this report.
The model is a connected structured block with six TET4 per hexahedral cell, homogeneous isotropic linear elasticity, a uniform nodal UX dead load of 1000 N on the x=length face, and linear-static boundary conditions from the existing large-model generator. WEDGE6, nonlinear routes and post-buckling are out of scope.
Reproduction contract¶
python scripts/run_wp12_scaling.py --output qualification/0_2_7/wp12_scaling_evidence.json --targets 100000 300000 500000 750000 1000000 --replay-target 100000 --timeout-seconds 600 --max-rss-gb 4
The campaign runs isolated child processes with a 600 second timeout and a
4 GiB RSS ceiling. It records topology, timing, memory, sparse non-zeros when
an assembled matrix exists, residuals, solution digests and environment
metadata. High-DOF SciPy cases are rejected by the existing 200000-DOF guard
before model allocation. The separate assembly-only 300k probe is recorded in
qualification/0_2_7/wp12_assembly_probe_300k.json.
Environment: Windows 10 build 10.0.19045, Python 3.13.1, NumPy 2.2.6,
SciPy 1.15.2, psutil 7.2.2, 12 logical CPUs and approximately 103 GB RAM.
mpi4py was available; petsc4py and slepc4py were not available, so no
PETSc/SLEPc verdict is issued.
Size ladder¶
| Target | Actual DOF | Elements | Matrix-free CG | SciPy CG | SciPy direct |
|---|---|---|---|---|---|
| 100k | 107,811 | 196,608 | PASS_ITERATIVE |
PASS_FULL_SOLVE |
RESOURCE_LIMITED_MEMORY |
| 300k | 311,469 | 584,016 | PASS_ITERATIVE |
SOLVER_LIMITED |
SOLVER_LIMITED |
| 500k | 526,848 | 998,250 | PASS_ITERATIVE |
SOLVER_LIMITED |
SOLVER_LIMITED |
| 750k | 750,141 | 1,429,968 | PASS_ITERATIVE |
SOLVER_LIMITED |
SOLVER_LIMITED |
| 1M | 1,029,000 | 1,971,054 | RESOURCE_LIMITED_TIME |
SOLVER_LIMITED |
SOLVER_LIMITED |
PASS_ITERATIVE is a completed matrix-free solve with finite observables and
relative residual between 9.732e-09 and 9.898e-09. The maximum completed
matrix-free solve is 750,141 DOF. The 1M probe reached the declared 600 second
limit at a peak sampled RSS of 557,006,848 bytes; it produced no numerical
failure and is not a successful 1M solve.
The 100k SciPy CG full solve completed in 6.611 s with 3,813,789 assembled
non-zeros, peak RSS 192,356,352 bytes and relative residual 1.169e-12.
SciPy direct at the same size reached the 4 GiB RSS limit before completion.
The higher SciPy sizes are SOLVER_LIMITED by the explicit 200000-DOF guard;
no unbounded allocation was attempted.
300k assembly probe¶
The current-source assembly-only probe completed for 311,469 DOF and 584,016
TET4 elements. It measured 11,168,199 global non-zeros, 135,264,268 bytes of
CSR storage, 217.882 s wall time and peak RSS 1,466,396,672 bytes. Phase
timings were 158.609 s mesh validation, 10.554 s assembly planning, 45.662 s
assembly, 34.220 s element kernels, 4.036 s sparse conversion and 0.069 s
sparse finalization. The linear solve was deliberately NOT_RUN; this row is
assembly evidence, not a full-solve result.
Numerical safety and replay¶
The 100k matrix-free replay produced the same input digest and result digest in
two isolated runs and was classified deterministic. Existing targeted tests
for matrix-free/SciPy equivalence and the no-dense-conversion guard pass. All
completed campaign rows had finite metrics; the report contains zero
numerical failures. The matrix-free residuals are consistent with its declared
rtol=1e-8 contract, while the assembled SciPy CG residual is substantially
smaller.
No FEM formulation, material law, load convention or existing element kernel
was changed. The retained optimization WP12-OPT-001 caches the already
grouped TET4 connectivity and flattened DOF indices in the matrix-free
operator. Targeted equivalence remained passing, and a separate 30k engineering
probe showed approximately 1.9x lower elapsed time after the cache change
with the same iteration count and residual. This is a local engineering
measurement, not a universal speedup claim.
Profile and bottlenecks¶
The 10k matrix-free profile identifies element matvec and scatter accumulation as the dominant solve work. The 300k assembly probe identifies generated-model validation/materialization as the dominant wall-time component, followed by element kernels and sparse conversion. The bounded ranking is:
- matrix-free element matvec and scatter accumulation;
- iteration count and preconditioner quality;
- large-model validation and generated-model materialization;
- assembled sparse storage and factorization for the SciPy direct route.
The recommended measured path is matrix-free CG for the high-DOF structured TET4 route, with assembled SciPy CG limited to its explicit configured domain. PETSc remains a future option only after its dependencies and reproducible execution environment are available.
Bounded conclusion¶
The campaign supports PASS_WITH_LIMITATIONS evidence for the declared
structured TET4 linear-static route and is ready for Owner review. It supports
completed iterative solves through 750,141 DOF, a characterized 311,469-DOF
assembly-only result, and a bounded 1M readiness attempt. It does not support
a public full-solve claim at 1M DOF, a multi-million-DOF claim, general
topology scaling, or a claim that direct SciPy is viable at the measured high
sizes.
Machine-readable records:
The campaign report and this document are CONTROLLED_PROOF records. The
Owner decision remains PROPOSED_OWNER_REVIEW; resource-limited and
solver-limited rows are preserved rather than converted to PASS.