About DiFX

DiFX is a collection of code for correlating baseband radio interferometry data, producing visibilities. It was originally developed for the Australian LBA, but it also supports Mk5 and K5 style recording formats. In principle, it could be easily modified to work with any baseband data. Presently it produces visbilities in the RPFITS format, but in future support is planned is planned for FITS-IDI.

DiFX has been developed by Adam Deller at Swinburne University, with assistance from many parties including Steven Tingay, Craig West, Walter Brisken (NRAO) and Warwick Wilson (ATNF).


DiFX can be configured to produce visibilties with pretty much arbitrary time and frequency resolution (although you need to be aware of the fundamental limitations of FFT window sizes etc), and can produce an arbitrary combination of products on each baseline (ie full stokes on one baseline, parallel only on another etc). It can channelise using an FFT or a polyphase filterbank (slower, but better channel spectral response - good for isolating RFI or spectral lines). Finally, it can pulsar bin visibilities into any number of bins, using incoherent dedispersion. This requires some a priori information on the pulsar ephemerides, provided in the form of a polyco file produced by the pulsar software package TEMPO. If you're just trying to recover the best possible SNR from a pulsar observation (eg to do astrometry) then DiFX gives you the option to sum your bins, after weighting each by the power contained in that bin. This gives the best possible SNR, by integrating over the whole pulse period.

The code and dependencies

DiFX is written in C++, but most of the computation is performed in a limited number of vector routines (FFT, complex multiply, complex add etc). Support for different performance libraries is provided through an architecture header file, which maps generic function calls vectorXXX() to specific function calls. Presently, the mapping is only complete for the Intel Performance Primitive (IPP) library, as no suitable library has been found for AMD architectures. The IPP routines will, however, run on any x86-based 32 or 64 bit machine, although non-optimised code will be dispatched to non-Intel processors.

Message-passing between nodes is accomplished using the mpich1 implementation of MPI, the Message Passing Interface standard. The structure of the DiFX architecture is shown below.

The code makes use of a precomputed geometric delay model for each telescope in the array. This precomputed model is presented to the correlator in a simple format text file. While the user is free to produce this delay file with any means possible, so long as it conforms to the format specifications, additional software is provided that makes use of CALC, an astrometric and geodetic software package developed by GSFC, to produce accurate models in a convenient fashion.

In addition to the CALC library, users will need to obtain the RPFITS library from ATNF, and (unless planning to implement an alternate vector library) the IPP library from Intel - you can get a free trial for non-commercial use, and the full license is quite inexpensive anyway. All of this is explained in much more detail in the downloads page.

Back to main page