Wideband autonomous SDR analysis engine forked from sdr-visual-suite
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.1KB

  1. package gpudemod
  2. import "testing"
  3. func TestStreamingGPUHostOracleComparableToCPUOracle(t *testing.T) {
  4. r := &BatchRunner{eng: &Engine{sampleRate: 4000000}, streamState: make(map[int64]*ExtractStreamState)}
  5. job := StreamingExtractJob{
  6. SignalID: 1,
  7. OffsetHz: 12500,
  8. Bandwidth: 20000,
  9. OutRate: 200000,
  10. NumTaps: 65,
  11. ConfigHash: 777,
  12. }
  13. iq := makeDeterministicIQ(16000)
  14. gpuLike, err := r.StreamingExtractGPUHostOracle(iq, []StreamingExtractJob{job})
  15. if err != nil {
  16. t.Fatalf("unexpected host-oracle error: %v", err)
  17. }
  18. oracleRunner := NewCPUOracleRunner(4000000)
  19. oracle, err := oracleRunner.StreamingExtract(iq, []StreamingExtractJob{job})
  20. if err != nil {
  21. t.Fatalf("unexpected oracle error: %v", err)
  22. }
  23. if len(gpuLike) != 1 || len(oracle) != 1 {
  24. t.Fatalf("unexpected result lengths: gpuLike=%d oracle=%d", len(gpuLike), len(oracle))
  25. }
  26. metrics, stats := CompareOracleAndGPUHostOracle(oracle[0], gpuLike[0])
  27. if stats.Count == 0 {
  28. t.Fatalf("expected compare count > 0")
  29. }
  30. if metrics.RefMaxAbsErr > 1e-5 {
  31. t.Fatalf("expected host-oracle path to match cpu oracle closely, got max abs err %f", metrics.RefMaxAbsErr)
  32. }
  33. }