Skip to content

Add GPU resident grid GICP covariance preparation - #175

Merged
rsasaki0109 merged 1 commit into
mainfrom
codex/gpu-gicp-resident-grid-covariances
Oct 13, 2026
Merged

rsasaki0109 merged 1 commit into
mainfrom
codex/gpu-gicp-resident-grid-covariances

Conversation

@rsasaki0109

Copy link
Copy Markdown
Owner

Depends on #174; CI must pass for the pinned source and dependency before merging.

Bounded resident-radius GICP adds source KD-tree preparation and fixed-capacity neighborhood buffers. Add explicit align_with_gpu_resident_grid_covariances / upload_with_gpu_grid_covariances for dense radius grids, gathering directly from original GPU positions into resident packed covariances. CPU counting-sort grids and the target tree remain, while the source tree, neighborhood rows and covariance readback/re-upload are eliminated.

Reuse the canonical grid arithmetic unchanged, with complete support capacity including self/duplicates. Overflow, malformed grid data or invalid SPD/numeric output zero both covariance sets and reject all equations. Grid indices use private scratch leased through one submission. Dense cell limits reject explicitly; existing sparse, k-NN and legacy routes retain their contracts. CPU 6x6 solves/pose updates remain.

Validation:

  • GPU all-feature suite: 232 passing tests; registration all-feature library: 35 passing tests. Native grid alignment covers 162 scale/radius/stopping conditions, plus boundary/capacity/error/ownership/concurrency and minimal facade checks. Previous radius/k-NN regressions pass.
  • 22,230 covariance rows / 133,380 f32 values match legacy grid output bit for bit; canonical shader and common pose/update loop are unchanged. Complete receipts and global invalidation are checked.
  • GPU/registration all-target Clippy, CPU-only GICP, optional WASM compile, minimal facade and Rustfmt pass. No core/dependency/unsafe changes.
  • Two isolated completed-call surveys, 20 cyclic samples per stage/condition. At 65,537 points, new grid is 1.18–1.47x faster than legacy GPU and 1.56–1.91x faster than bounded resident radius. All corresponding within-survey 95% intervals exceed one. Small host-update calls remain faster; no automatic placement/crossover claim is made.
  • At that size, H2D is 3.96–4.42 MB (56.63–59.28% below legacy GPU); D2H stays 1,024 bytes. The duplicated capacity-128 condition no longer materializes its 135.3 MB neighborhood payload. Payload counts are not measured peak allocation.

Full conditions and every timing result: resident grid evidence.

@rsasaki0109
rsasaki0109 changed the base branch from codex/gpu-gicp-resident-radius-covariances to main October 13, 2026 01:01
@rsasaki0109
rsasaki0109 merged commit 69cc9e2 into main Oct 13, 2026
125 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant