CLAUDE: rung-2 closure - GPU peak kernel in production (JNA, float): PD never leaves the GPU
leanMeasure now measures peaks ON the GPU (corr2D_peak_eig_f via
GpuQuad.execCorr2DPeaks, float = the ratified production precision; the
double kernel stays the validation tier): per LMA iteration only the small
task streams go up and [n_corr][8] peak floats come down - the PD download
happens ONLY for debug rendering (-POSE-RT-CORR2D), the pose_corr export
capture, or the JCuda fallback (the original Java-oracle loop, kept intact).
- GpuQuad: execCorr2DPeaks/setPeakDebias base = null/false (JCuda -> Java
fallback); PEAK_ROW_FLOATS contract constant.
- GpuQuadJna + TpJna: tp_proc_exec_corr2d_peak(use_float)/get_peaks/
set_peak_debias bindings.
- TDCorrTile: convertTDtoPDInPlace split - fetchNormalizedPD is now the
optional D2H half.
- CuasPoseRT.leanMeasure: normalize in place -> float peak kernel -> map
rows by packed corr index (valid==0 = kernel reject == oracle null);
de-bias uploaded as the float array when pose_debias > 0; once-per-program
'GPU peak kernel active' console line.
- PoseCorrExport.iterGpuPeaks: the production float rows land in the case
(expected_gpu_peaks_it<k>, corr_indices order) = the TOL-0 peak tier;
test_pose_corr_jna compares its float replay bit-exactly when present
(tile_processor_gpu companion commit).
mvn package OK; CuasTD headless self-test ALL PASSED; run_cases.sh ALL PASS
(pre-hookup case: gpu_peaks buffer absent -> skipped gracefully).
Co-Authored-By:
Claude Fable 5 <noreply@anthropic.com>
Showing
This diff is collapsed.