The PSRDADA Project

PSRDADA is an Open Source software project to support the development of data acquisition and distributed analysis systems. The authors of the code use it primarily in the implementation of baseband recording and processing instrumentation for pulsar astronomy.

What is DADA?

DADA stands for Distributed Acquisition and Data Analysis, and it consist of a C library and applications.

The modular design of PSRDADA includes:

  • relatively small, independent processes that perform specific tasks, neatly separating data transport, command and control, and data reduction;
  • data transfer between processes via a flexible ring buffer in shared memory and a variety of internet protocols; and
  • control and monitoring of distributed processes via scripts, configuration files, text-based socket connections, and a web-based user interface.
At the lowest level, PSRDADA is a flexible and well-managed ring buffer with a variety of applications for piping data from device to ring buffer and from ring buffer to device. More than one data set may be queued in the ring buffer at one time, and data may be recorded in selected bursts using data validity flags.

A variety of clients have been implemented that can write data to the ring buffer and read data from it. The primary write clients can be controlled via a simple, text-based socket interface, and read client software exists for writing data to an array of disks, sending data to an array of nodes, or processing the data directly from RAM.

At the highest level of control and configuration, scripts have been written to launch the PSRDADA configuration across all nodes in the cluster, monitor all relevant processes, configure and control through a web-based interface, interface with observatory scheduling tools, and manage the ownership and archival of project data.

Burst mode recording

PSRDADA supports a mode in which data is clocked into the ring buffer but not "flagged as valid" until some trigger event. Data are over-written on each cycle through the ring buffer and, when a trigger command is received, any segment of past data that has not yet been over-written can be flagged as valid and subsequently processed/stored/sent somewhere.

This mode will be useful, for example, in giant pulse studies where it is not possible to coherently dedisperse the entire band or write to disk at the required speed or for the duration of the observation. However, you might have some hardware that can do a quick incoherent dedispersion, search its output for giant pulses, and trigger the baseband system to record that small segment of data within the time it takes to cycle through the ring buffer.