DiagonalPreconditioner
Published configurations
Diagonal-preconditioner setup and application on constrained operators.
Measured operation
Separates diagonal setup from iteration-time application.
The Eigen backend and lower/upper policy match Solver::CG's current native implementation. This executable uses that backend's preconditioner type; it does not add a source inspection API or a second Rodin solver path. Mesh/space setup, manufactured assembly and reference checks are untimed.
Lifetimes
OwnedCompute includes local construction, compute and destruction. RetainedCompute reuses the already-sized diagonal storage, as in repeated fixed-size CG calls. Apply overwrites a preallocated output and excludes compute. OwnedCompute is not process-first or allocator-cold measurement. Fresh and retained instances are checked before and after the timed loop.
Numerical guards
The independent result is \(y_j=x_j/A_{jj}\). These manufactured SPD systems must have finite, nonzero diagonal entries. Wrong outputs are rejected. Recomputing on \(1.5A\) must produce \(y/1.5\), followed by restoration of the original result. Thus stale retained diagonal data is not accepted. No timing gate or CTest entry is added.
Recorded results
Each case retains its original inputs, iteration policy and correctness checks. Raw reports preserve counters, repetitions and the Google Benchmark context. CPU, wall and manually supplied times are labeled separately; unlike operations and configurations are not averaged together.
Timing history
RodinDiagonalPreconditionerBenchmarks · auto · regular · ranks: 1
No timing history has been published for this component.
Benchmark machine and measurement conditions
Published CI benchmarks run on standard GitHub-hosted ubuntu-24.04
virtual machines for public repositories.
| System | CPU | Memory | SSD |
|---|---|---|---|
| Ubuntu 24.04, x64 | 4 vCPUs | 16 GB | 14 GB |
The benchmark builds use GCC 14 and Release mode. Each job runs one benchmark executable at a time. OpenMP, OpenBLAS and MKL use one thread; MPI ranks share the same runner. The selected configuration identifies the build and rank count.
The CPU model and host load can vary between virtual machines, so small timing differences should be checked across repeated runs. GitHub runner specifications describe the available hardware. The source workflow is BenchmarkGroup.yml.