Architecture
DSPSR is organized into two main layers.
Kernel/ Core I/O and data structures
├── Classes/ TimeSeries, BitSeries, File, Observation
└── Formats/ 42+ file formats (DADA, SKA1, GUPPI, FITS, VDIF, …)
↓
Signal/ DSP operations
├── General/ Filterbank, InverseFilterbank, Convolution, Detection
│ Dedispersion, PScrunch, TScrunch, FScrunch
│ CUDA variants for GPU acceleration
├── Statistics/ SKLimits, ProbabilityDensity
└── Pulsar/ Fold, CyclicFold, Archive interface
Design patterns
Factory / Registry
: File format support uses a factory pattern. dsp::File::create()
auto-detects the format of an input file and returns the appropriate
subclass.
Operation pipeline
: All DSP algorithms inherit from dsp::Operation. The processing
pipeline chains operations together, each transforming a
dsp::TimeSeries.
CUDA acceleration
: Many operations in Signal/General/ have optional CUDA variants
that run on the GPU. These are compiled when DSPSR is built with
--with-cuda-* configure flags.
PSRCHIVE integration
DSPSR’s Signal/Pulsar/ module produces Pulsar::Archive objects
(from PSRCHIVE) as its output. The folded profiles can then be further
processed using PSRCHIVE’s analysis and calibration tools.