Преглед на файлове

Introduce reusable gpudemod batch runner

master
Jan Svabenik преди 2 дни
родител
ревизия
094ee9ddff
променени са 3 файла, в които са добавени 39 реда и са изтрити 6 реда
  1. +6
    -6
      cmd/sdrd/helpers.go
  2. +28
    -0
      internal/demod/gpudemod/batch_runner.go
  3. +5
    -0
      internal/demod/gpudemod/errors.go

+ 6
- 6
cmd/sdrd/helpers.go Целия файл

@@ -75,20 +75,20 @@ func extractSignalIQBatch(iq []complex64, sampleRate int, centerHz float64, sign
decimTarget = sampleRate
}

var eng *gpudemod.Engine
var runner *gpudemod.BatchRunner
if gpudemod.Available() {
if gpuEng, err := gpudemod.New(len(iq), sampleRate); err == nil {
eng = gpuEng
defer eng.Close()
if gpuRunner, err := gpudemod.NewBatchRunner(len(iq), sampleRate); err == nil {
runner = gpuRunner
defer runner.Close()
}
}

if eng != nil {
if runner != nil {
jobs := make([]gpudemod.ExtractJob, len(signals))
for i, sig := range signals {
jobs[i] = gpudemod.ExtractJob{OffsetHz: sig.CenterHz - centerHz, BW: sig.BWHz, OutRate: decimTarget}
}
if gpuOuts, _, err := eng.ShiftFilterDecimateBatch(iq, jobs); err == nil && len(gpuOuts) == len(signals) {
if gpuOuts, _, err := runner.ShiftFilterDecimateBatch(iq, jobs); err == nil && len(gpuOuts) == len(signals) {
for i := range gpuOuts {
out[i] = gpuOuts[i]
}


+ 28
- 0
internal/demod/gpudemod/batch_runner.go Целия файл

@@ -0,0 +1,28 @@
package gpudemod

type BatchRunner struct {
eng *Engine
}

func NewBatchRunner(maxSamples int, sampleRate int) (*BatchRunner, error) {
eng, err := New(maxSamples, sampleRate)
if err != nil {
return nil, err
}
return &BatchRunner{eng: eng}, nil
}

func (r *BatchRunner) Close() {
if r == nil || r.eng == nil {
return
}
r.eng.Close()
r.eng = nil
}

func (r *BatchRunner) ShiftFilterDecimateBatch(iq []complex64, jobs []ExtractJob) ([][]complex64, []int, error) {
if r == nil || r.eng == nil {
return nil, nil, ErrUnavailable
}
return r.eng.ShiftFilterDecimateBatch(iq, jobs)
}

+ 5
- 0
internal/demod/gpudemod/errors.go Целия файл

@@ -0,0 +1,5 @@
package gpudemod

import "errors"

var ErrUnavailable = errors.New("gpudemod batch runner unavailable")

Loading…
Отказ
Запис