|
- package gpudemod
-
- import "testing"
-
- func TestStreamingGPUHostOracleComparableToCPUOracle(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)
- gpuLike, err := r.StreamingExtractGPUHostOracle(iq, []StreamingExtractJob{job})
- if err != nil {
- t.Fatalf("unexpected host-oracle error: %v", err)
- }
- oracleRunner := NewCPUOracleRunner(4000000)
- oracle, err := oracleRunner.StreamingExtract(iq, []StreamingExtractJob{job})
- if err != nil {
- t.Fatalf("unexpected oracle error: %v", err)
- }
- if len(gpuLike) != 1 || len(oracle) != 1 {
- t.Fatalf("unexpected result lengths: gpuLike=%d oracle=%d", len(gpuLike), len(oracle))
- }
- metrics, stats := CompareOracleAndGPUHostOracle(oracle[0], gpuLike[0])
- if stats.Count == 0 {
- t.Fatalf("expected compare count > 0")
- }
- if metrics.RefMaxAbsErr > 1e-5 {
- t.Fatalf("expected host-oracle path to match cpu oracle closely, got max abs err %f", metrics.RefMaxAbsErr)
- }
- }
|