Complete public CUDA normal-preparation comparison¶
Previous source: 3f070af51921f60451c28b192ea815cc3d466025. Current source:
526dada8b41207a729e7f3c02da8ce4d8a04c92f. The original public GLIM Livox bag SHA-256 is
f57a2e85339316d4235ab693ab2876aac5e113625c7f8b0f7873b62f92e09643. Raw data is not redistributed.
| Scope | Previous CUDA median | Fused-normal CUDA median | Speedup |
|---|---|---|---|
| Complete worker | 116.955 s | 90.017 s | 1.299x |
| Normal preparation within the worker | 32.733 s | 8.693 s | 3.766x |
| Four unchanged CPU fits, including covariance | 20.671 s | 17.056 s | 1.212x |
| Pair | Method | Whole seconds | Normal seconds |
|---|---|---|---|
| 0 | prior | 142.245773 | 42.603667 |
| 0 | current | 90.016579 | 8.692601 |
| 1 | current | 95.897507 | 9.259124 |
| 1 | prior | 116.954752 | 30.405365 |
| 2 | prior | 106.645805 | 32.732960 |
| 2 | current | 84.384773 | 7.027216 |
All three complete comparisons have zero rotation, lever-arm, clock, holdout and decision difference. The existing audit also checks every per-round covariance, trajectory, cost and convergence result.
The first current worker records 19,757,494 normal rows, 448 dedicated normal-kernel calls and 474 native normal repairs across 8 odometry passes. No spatial-return budget or quality tolerance was relaxed.
Three alternating fresh-process pairs use one BLAS thread and separate initially empty CuPy compilation caches. Driver/runtime caches may persist and host load is not reserved. The six-second, four-round workload retains the same dense policy: 0.03 m voxels, three local-map scans, a 1 nm coordinate grid and returned motion grids of 1 micrometre translation and 0.1 microradian rotation-vector components. These grids remain disabled by default; CPU remains the default.
Whole timing includes imports, reading, GPU setup/compilation, all odometry, association, fits/covariance, noise updates, holdout, signed controls, hashes, saves and verified imports. The bound launcher observes outermost normal preparation without inserting GPU synchronization. The preparation ratio is part of the whole-worker ratio and is not multiplied by it. CPU fitting is unchanged; its timing difference is not a GPU-fitting implementation.
All final real-data results remain INCONCLUSIVE and no independent extrinsic truth is supplied. Component acceleration is substantial, while complete-run acceleration is smaller. These observations apply to this explicit dense workload.
The publication index binds all complete results, original logs, full fitted covariance/trajectory arrays, input and imported-source hashes, both exact source archives/manifests, launcher, schema and publisher. Its CPU-only audit recomputes both whole and preparation ratios and requires actual normal-kernel work.
python -m tools.audit_bspline_lidar_imu_benchmark docs/assets/cuda_normal_preparation