Skip to content

Compute GPU ISS saliency and keypoints from resident radius neighborhoods - #168

Merged
rsasaki0109 merged 1 commit into
mainfrom
codex/gpu-iss-keypoints
Oct 12, 2026
Merged

rsasaki0109 merged 1 commit into
mainfrom
codex/gpu-iss-keypoints

Conversation

@rsasaki0109

Copy link
Copy Markdown
Owner

ISS still computed covariance saliency and keypoint selection on CPU after GPU radius neighborhoods became available. Add opt-in feature-iss-gpu detection and resident GpuIssInput primitives. Uploaded original queries also serve as covariance positions; both radius graphs feed compensated local covariance, Jacobi eigenvalue saliency and NMS on device. The explicit wrapper retains CPU tree construction, ordered flag compaction and schema/attribute gathering, and returns complete upload/flag/status transfer receipts.

Both graph capacities include self and must fit all rows. Device validation checks counts, indices and distance gates before selection; any incomplete/malformed graph or unsupported local-extent underflow zeros all scores/flags and rejects at download. Outputs own their buffers, and runtime/frame ownership is checked. Separate eigen diagnostic readback is explicit. Ordinary CPU math and selection are unchanged; GPU f32 decisions can differ near f64 threshold/NMS boundaries, and GPU configuration checks are stricter. WASM evidence is compilation only.

Validation: 27,396 decisions and 82,188 eigenvalues audited against f64 covariance/Jacobi with a trace-based bound; independent CPU NMS reproduces all GPU flags from device scores. The 202 CPU/GPU selection differences are individually confined to threshold/competing-saliency uncertainty bands. Analytic box eigenvalues and equal maxima, both graph overflows/poisoned indices, complete output zeroing, exact receipts, scalar attribute bits/metadata, empty/huge-radius/underflow/support cases, retained outputs and concurrent/runtime/frame guards pass. Native all-feature GPU regression: 203 passed, 23 ignored; feature library: 23 passed, two ignored. Facade integration, all-feature/CPU-only/isolated-profile Clippy, minimal/WASM compilation and formatting pass. Hosted CI adds two isolated feature profiles and compiles adapter tests.

Two isolated release surveys compare completed calls against the current CPU detector, including four workers at 65,537 points. Curved/coincident cases at that size have identical selected indices and paired CPU/full-GPU ratios of 2.68-3.59x. The planar case has no clear gain; all 257-point cases favor CPU, and the curved case differs by 14 decisions. All samples, selected counts, uncertainty, transfer/timing boundaries and reproduction are recorded in ISS validation and measurement note. This follows merged PR #167.

@rsasaki0109
rsasaki0109 merged commit f0ea53a into main Oct 12, 2026
121 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