Public KITTI signed-axis and CPU process evidence¶
Five schema-valid benchmark artifacts record a fixed six-case CPU/CUDA sweep
and a separate CPU process execution check on public KITTI raw drive
2011_09_30_drive_0018_sync/image_02. All runs use the same 25 original frames,
3,130,279 Velodyne points, 20-fit/5-holdout split, and frozen FeatDepth provider:
7e3ef953a360a7c01ed0cdc3cf947db97fb0aff5912ced805d80bebe210d3360.
Hardware is the i7-9750H / NVIDIA CUDA GPU 6 GiB Windows environment used in the
earlier demonstration: Python 3.12.10,
NumPy 2.3.4, CuPy 14.2.0, driver 596.36, local CUDA 12.8 toolkit.
Six fixed initializations¶
sweep.plan.definition.json retains the plan written before optimization.
Its trial entries explicitly say not executed; frozen plan entry; it is not
completed execution evidence. sweep.definition.json / sweep.benchmark.json
record all twelve subsequent invocations. The cases add local Euler rotation
and camera-frame translation of ±0.5 degrees / ±0.5 m on x, y, or z to the
dataset reference, in the declared x+/x-/y+/y-/z+/z- order. Search settings
(including the 800-evaluation budget) and frame split are fixed throughout.
Each invocation verifies/loads inputs and prepares a fresh projector.
Histogram ranges are resolved on fit frames under that case's declared initial
pose and remain fixed during its search; holdout is excluded from this step.
All twelve invocations converged. Within every case, CPU/CUDA full traces, final poses, metrics, and initial/final holdout records match exactly. Cases can have different traces and output poses and are not compared as replays.
| Case | Evaluations per backend | CPU solve | CUDA solve | Final rotation difference | Final translation difference | Final holdout MI |
|---|---|---|---|---|---|---|
| x-positive | 229 | 90.446 s | 3.085 s | 0.390923° | 0.160078 m | 1.293495 nat |
| x-negative | 313 | 66.425 s | 8.450 s | 0.410874° | 0.104583 m | 1.287191 nat |
| y-positive | 277 | 83.026 s | 3.446 s | 0.527379° | 0.167705 m | 1.294101 nat |
| y-negative | 241 | 52.591 s | 12.053 s | 0.266233° | 0.091001 m | 1.281463 nat |
| z-positive | 265 | 90.288 s | 4.861 s | 0.258640° | 0.087052 m | 1.283678 nat |
| z-negative | 241 | 54.330 s | 4.297 s | 0.285129° | 0.089486 m | 1.281675 nat |
Initial reference differences are 0.5 degrees / 0.5 m for every case. The
y-positive final rotation difference increases to 0.527379 degrees; this
observation remains in the population. Optimizer termination and exact backend
parity do not establish calibration accuracy. Dataset calibration is reference
evidence, FeatDepth training overlap is possible, and covariance/observability
remain unknown with standard-result quality warn.
Measured elapsed time through all case reports is 568.615 s. First invocations are included, with no separate warm-up; process-wide kernel caches persist between cases. Timings vary substantially, and cross-case summaries mix different search workloads. No cross-case speed ratio, accuracy acceptance threshold, statistical confidence, or portable speed guarantee is inferred.
CPU process execution check¶
cpu-process-smoke.definition.json / cpu-process-smoke.benchmark.json
compare the same six-case NumPy/NumPy-replay sweep at a fixed 13-evaluation
budget, once with --workers 1 and once with --workers 2. All twelve standard
numerical result payloads match exactly between serial and parallel execution,
including the full search trace, final poses, metrics, and holdout records.
Every trace also matches the first thirteen evaluations of its corresponding
longer CPU/CUDA run above.
| Execution | Elapsed through all case reports |
|---|---|
| Serial | 139.842971 s |
| Two spawned CPU worker processes | 74.843543 s |
The observed ratio is 1.87x for this one execution pair. Elapsed includes shared verification, worker startup, input verification/loading, solve, holdout, serialization, and individual HTML reports; suite summary writing is excluded. There is no separate warm-up or dedicated isolation from background load. Parallel runs include CPU/memory contention and each process owns its arrays and projectors. This does not establish scaling for longer converged searches or additional worker counts.
All calibration attempts stop at max_evaluations=13 and remain partial.
The two smoke benchmark success statuses mean completed execution and exact
serial/parallel result parity, with partial_calibration_trials=12 explicitly
reported for each method. They do not label calibration convergence. The
original child/suite comparisons preserve those twelve partial attempts as
failed trials, with stopping reasons and all available results.
Provenance and reproduction¶
Raw images, scans, depth arrays, weights, standard results, and generated HTML remain external. Original per-case result hashes and child comparison hashes are preserved in the suite artifacts. CPU smoke output hashes bind the original external suite benchmark files, and its source-artifact map binds the original CLI summaries and local manual aggregation script. That aggregation verifies every numerical payload and capped trace prefix before publishing these files.
Published paths are normalized to ${DATASET_ROOT} / ${WORKSPACE_ROOT}.
Numerical values, timings, configuration hashes, and external input/output
hashes are unchanged. The published suite binds the normalized published plan
bytes and also preserves the original local plan hash. Trial notes retain the
original plan hash used during execution. Source problems, provider, child
comparisons, and original results refer to external files rather than new
normalized copies.
The full CPU/CUDA measurement used the development worktree based on 46516ec;
its generator source hashes identify code retained in commit 84390d2. The CPU
process measurements used 84390d2 with the subsequent mobile text-wrapping
fix. The GPU overview was regenerated with that presentation fix, retaining its
original HTML and all original JSON locally. Desktop/mobile overview rendering,
expanded limitations, all six case reports, and all 54 images/SVGs were checked.
Follow the sweep commands.
For the CPU execution check, use --candidate-backend numpy --max-evaluations 13
and fresh output directories, first --workers 1, then --workers 2.
Exit 2 is expected for these partial comparisons; keep every attempt and
compare their numerical payloads before interpreting elapsed times.