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