Skip to content

GPU symbols ​

The fused per-symbol kernel against the f64 CPU arbiter

10/10 passed in 1365ms

TestWhat it doesResult
test_error_flat_in_nThe variance stays inside VAR_TOL across an eightfold n, where a sequential f32 sum is 4.5e-4 wrong at n = 1e6 and 2.7e-1 at 1e8, linear in n.✅ pass
test_excess_noise_matchesInput-referred xi agrees with the CPU arbiter within XI_TOL = 1e-3, looser because (sigma2 - 1 - v_el)/t_hat^2 amplifies a sigma2 error by ~1/(T*xi), forty here.✅ pass
test_kernel_time_reportedTimestamp queries report positive kernel time inside the wall clock.✅ pass
test_no_modulation_matchesWith V_A = 0 there is nothing to regress on and both report a bare slope.✅ pass
test_odd_pilot_frequencyA non-dyadic pilot frequency tracks the CPU SNR to SNR_TOL: frac*k hits 2.5e6 at k = 1e7, where an f32 ulp is a quarter cycle, hence the 64-bit fixed point.✅ pass
test_partials_are_treeOne f64 partial comes back per workgroup, not one per symbol or one total.✅ pass
test_pilot_snr_matchesThe pilot bin's SNR over the adjacent empty bin agrees to SNR_TOL = 1e-5.✅ pass
test_slope_matchesThe GPU slope sum(a.y)/sum(a.a) matches the f64 arbiter to SLOPE_TOL = 1e-5.✅ pass
test_static_phase_matchesWith both linewidths zero the walk vanishes and slope and variance still agree.✅ pass
test_variance_matchesThe residual variance of y - t_hat*a agrees with the arbiter to VAR_TOL = 1e-5.✅ pass