PAPER_Correlator_Manifest - david-macmahon/wiki_convert_test GitHub Wiki

PAPER Manifest

The PAPER correlator is comprised of a collection of various pieces of software and gateware. These components are listed here along with details of how to obtain their source code.

F Engine

The F engine is based on ROACH2s using ADC16 cards. We also have some supporting software to configure/control the F engines.

Gateware

The gateware is available here:

git clone http://astro.berkeley.edu/~davidm/paperfengine.git

Software

The F engine configuration and control software is Ruby based and consists of various pieces. These should be installable using the RubyGems gem command (kind of like Python's pip, but better), but that is not yet set up, so for now they must be installed from the source code (instructions included below).

I recommend installing at least version 1.9.3 of Ruby. If you install Ruby from Ubuntu, be aware that Ubuntu 12.04 defaults to Ruby 1.8.x, but it does support 1.9.3. You should also install the corresponding -dev package so that RubyGems will be able to build extensions.

Ruby/KATCP

# Get source code
git clone http://astro.berkeley.edu/~davidm/rb-katcp.git

# Change directory
cd rb-katcp

# Build gem file
rake gem

# Install gem (change X.Y.Z to match the desired version)
sudo gem install pkg/katcp-X.Y.Z.gem

Ruby/KATCP allows Ruby code to talk to ROACH2s via KATCP. It has a much friendlier interface than the Python KATCP wrapper available in the corr package.

CASPER ADC16

# Get source code
git clone https://github.com/david-macmahon/casper_adc16.git

# Change into "ruby" subdirectory
cd casper_adc16/ruby

# Build gem file
rake gem

# Install gem (change X.Y.Z to match the desired version)
sudo gem install pkg/adc16-X.Y.Z.gem

The CASPER ADC16 package contains code to initialize an ADC16 design. The ADC16 uses high speed serial I/O to send data to the FPGA. The FPGA provides adjustable delay lines and SERDES blocks to facilitate the data transfer. The delay lines and SERDES blocks must be adjusted at runtime to ensure proper data transfer. The CASPER ADC16 package handles all of that automatically.

rb-papergpu

# Get source code
git clone http://astro.berkeley.edu/~davidm/rb-papergpu.git

# Change directory
cd rb-papergpu

# Build gem file
rake gem

# Install gem (change X.Y.Z to match the desired version)
sudo gem install pkg/papergpu-X.Y.Z.gem

The rb-papergpu package includes Ruby code for configuring and controlling the PAPER F engine.

X Engine

xGPU

git clone https://github.com/GPU-correlators/xGPU.git

This is the GPU X engine library that we use. I recommend installing the davidm branch as it installs an autotools config file (xgpu.m4) that will make installing later pieces (i.e. the paper_gpu code) easier.

HASHPIPE

git clone https://github.com/david-macmahon/hashpipe.git

This is the framework that we use to manage the data pipeline in the X engine. It is a stand-alone application that is by itself not very useful. It provides a plug-in architecture that allows (actually requires) applications to be created as run-time loadable modules (aka plug-ins). This is heavily derived from the GUPPI/VEGAS code base.

paper_gpu

git clone http://astro.berkeley.edu/~davidm/paper_gpu.git

This is the Hashpipe plug-in that implements the overall PAPER X engine functionality (using xGPU). This defines the applications shared data buffers application threads. The Hashpipe framework manages all of the gory details of shared memory creation and thread management so the application programmer can focus more on the application and worry less about the mundane OS details.

Ruby Hashpipe Utilities

# Get source code
git clone http://astro.berkeley.edu/~davidm/rb-hashpipe.git

# Change directory
cd rb-hashpipe

# Build gem file
rake gem

# Install gem (change X.Y.Z to match the desired version)
sudo gem install pkg/hashpipe-X.Y.Z.gem

These are a collection of utilities that make it easy to interact with Hashpipe status buffers and Redis (http://redis.io). This provides a convenient centralized way to manage/coordinate multiple Hashpipe instances running on multiple machines.

Output Data Products

This is getting really PAPER specific, but I am including this info for completeness. The PAPER correlator output data products (they get further processed so I do not think it is fair to call them "science data products" yet) are produced by a PAPER variation of the corr Python package. This version has common ancestry with the CASPER corr package, but has diverged over time:

git clone https://github.com/david-macmahon/PAPERCORR.git

The papercorr repository also includes the casper_correlator package. In addition to a number of common Python extensions, papercorr and/or casper_correlator relies on the aipy Python package:

git clone https://github.com/AaronParsons/aipy.git