//go:build cufft && windows package gpudemod import "testing" func TestStreamingGPUNativePreparedComparableToCPUOracle(t *testing.T) { r := &BatchRunner{eng: &Engine{sampleRate: 4000000}, streamState: make(map[int64]*ExtractStreamState)} job := StreamingExtractJob{ SignalID: 1, OffsetHz: 12500, Bandwidth: 20000, OutRate: 200000, NumTaps: 65, ConfigHash: 777, } iq := makeDeterministicIQ(16000) gpuRes, err := r.StreamingExtractGPU(iq, []StreamingExtractJob{job}) if err != nil { t.Fatalf("unexpected native prepared GPU error: %v", err) } oracleRunner := NewCPUOracleRunner(4000000) oracleRes, err := oracleRunner.StreamingExtract(iq, []StreamingExtractJob{job}) if err != nil { t.Fatalf("unexpected oracle error: %v", err) } if len(gpuRes) != 1 || len(oracleRes) != 1 { t.Fatalf("unexpected result sizes: gpu=%d oracle=%d", len(gpuRes), len(oracleRes)) } metrics, stats := CompareOracleAndGPUHostOracle(oracleRes[0], gpuRes[0]) if stats.Count == 0 { t.Fatalf("expected compare count > 0") } if metrics.RefMaxAbsErr > 1e-4 { t.Fatalf("native prepared path diverges too much from oracle: max abs err=%f", metrics.RefMaxAbsErr) } }