Real-time Pulsar Software

Directories, environment, etc

  • All source code, programs are installed in /opt/cbe-local/yuppi
  • Currently code is owned by user yuppi, group evla_pulsar.
  • Source /opt/cbe-local/yuppi/pulsar_env.csh or pulsar_env.bash to get environment variables and paths set up correctly.
    • Note, for the yuppi account this is done automatically upon login.
  • The pulsar_env.*script also sets up a few useful paths in the following variables:
    • $PSR = the base dir for pulsar code, currently /opt/cbe-local/yuppi.
    • $PSRDATA = the base dir for pulsar data output, currently /lustre/evla/pulsar.
    • $PSRLOGS = the dir for log files, currently /lustre/evla/pulsar/log.

Starting up / Stopping

  • These commands should be run while logged in to cbe-master as yuppi:
    • To run a command on all CBE nodes (via ssh): cbe_node_run (command).
    • To start the supervisord process control software on all nodes: cbe_node_run supervisord.
  • These commands can be run as any user logged in to cbe-master:
    • To start the YUPPI status daemon on all nodes: yuppi_supervisor start_status.
    • To start the YUPPI observing software on all nodes: yuppi_supervisor start.
    • To stop the YUPPI observing software on all nodes: yuppi_supervisor stop.
    • To start the YUPPI status daemon on all nodes: yuppi_supervisor stop_status.
    • To open the monitor screen (on cbe-master, or any other system that can connect to cbe nodes): yuppi_status_client.

Files

  • .evla and .vci files stored (at least for now) in /home/mchost/evla/scripts/test/realtimePulsar/
  • Each process outputs its log file in /lustre/evla/pulsar/log/$HOSTNAME (also accessible via the $PSRLOGS environment variable).

Software Overview

  • All programs described here run independently on each CBE node.
  • Software block diagram and data/metadata flow in a single node:
    yuppi arch2-1.png

Additional details about all software components follows:

supervisord

  • Executable name: supervisord (daemon); supervisorctl (control interface)
  • Source dir: $PSR/src/supervisor-3.1.0
  • Online repository: http://supervisord.org/
  • Description:
    • This is a third-party process control system.
    • We use it to start, stop and check status of the various YUPPI processes.
    • Configuration file is installed at $PSR/etc/supervisord.conf

yuppi_controller

  • Executable name: yuppi_contoller.py
  • Source dir: $PSR/src/EVLA_pulsars/controller
  • Online repository: http://github.com/demorest/EVLA_pulsars
  • Description:
    • This is a persistent process that listens for VCI or OBS multicast packets, and parses the XML contents.
    • When a matching VCI/OBS pair is found, it performs several actions, including:
      • Filling the status shared memory with relevant info about the observation (frequency, bandwidth, source name, VDIF thread IDs, etc).
      • Sending START or STOP to yuppi_daq_server.
      • Launching dspsr or digifil with appropriate options.
    • All actions are executed at the startTime specified in the OBS packet.

yuppi_daq_server

  • Executable name: guppi_daq_server
  • Source dir: $PSR/src/guppi_daq/src
  • Online repository: http://github.com/demorest/guppi_daq
  • Description:
    • This is a lightweight, persistent process listening for commands on the /tmp/guppi_daq_control FIFO.
    • When sent a START command, it launches a thread that reads VDIF data from the network, and organizes it into the databuf shared memory area.
    • Also compiles statistics about data loss, and puts this in the status shared memory.
    • Other commands accepted: STOP, MONITOR, and QUIT.

dspsr / digifil

  • Executable name: dspsr or digifil
  • Source dir: $PSR/src/dspsr
  • Online repository: http://dspsr.sourceforge.net
  • Description:
    • This is the main data processing program for pulsar modes. It reads data from the databuf shared memory, and writes PSRFITS files to $PSRDATA directory.
    • Both programs are part of the same package. dspsr does filterbank (splitting a "subband" into "channels"), coherent dedispersion and pulse period folding, while digifil does filterbank and time integration, producing search mode output.
    • This is not a persistent process, it is launched by yuppi_controller when a scan starts.
    • dspsr / digifil output currently appears in the yuppi_controller log file (but we may want to change this).

yuppi_status

  • Executable name: yuppi_status_daemon.py (server), yuppi_status_client.py (client)
  • Source dir: $PSR/src/EVLA_pulsars/status
  • Online repository: http://github.com/demorest/EVLA_pulsars
  • Description:
    • The server code runs on each node and makes the status shared memory contents available to remote clients via Pyro.
    • The client program reads several useful quantities from each node and compiles them into a single (curses-based) text display.
    • This is still very rudimentary and was put together quickly in order to have a easy way to keep tabs on all nodes at once while testing. It could grow into something more full-featured, or could be replaced with a different approach.

-- PaulDemorest - 2013-08-09
Topic attachments
I Attachment Action Size Date Who Comment
yuppi_arch2-1.pngpng yuppi_arch2-1.png manage 50 K 2013-08-14 - 14:31 PaulDemorest YUPPI software block diagram and data/metadata flow.
Topic revision: r7 - 2015-03-19, PaulDemorest
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding NRAO Public Wiki? Send feedback