Download and installation instructions

Important!

Many of the tarballs on this page are sadly out of date. To keep up with the latest developments, you really should get access to the DiFX SVN repository. The easiest way to do this is to join the DiFX-Users group hosted at Google Groups and request access - to do this, follow this link and request to join. The information below contains useful information on how to install and configure DiFX, but the SVN code repository is kept much more up to date.

Firstly - we need to make a distinction between the program which actually does the work (mpifxcorr) and the graphical frontend (DiFXGUI). DiFXGUI is just a nice bit of Java code to make setup easier. Its pretty easy to install and get running. Mpifxcorr, on the other hand, depends on a bunch of other libraries, which can be a bit more challenging. So, to make things easier, I've provided some pre-built binaries for 32 bit 2.6.x linux kernels, running on x86 architectures with SSE2 instructions (includes Pentium 4, Athlon, Opteron etc). Regardless, start off by creating a directory somewhere to put your shiny new correlator code, and defining an environment variable CORR_ROOT to point at this directory.

Mpifxcorr

If you just want the prebuilt binary, grab it here. Create a directory $CORR_ROOT/mpifxcorr/src/, and put it in there. If you don't want to install the source, skip down to the testing section and make sure it works (you may need to install MPI if you don't have it already - see below).

If you need to tinker with the source code, run on a different platform or tweak the compilation options, you'll need the mpifxcorr source and some other libraries, as well as an implementation of MPI. Running through them in order:

Okay, so now you have rpfits, ipp, vlba_utils and some kind of MPI all compiled and ready to go. What you need to do now is point mpifxcorr at these libraries and compile. So:
  1. Edit $CORR_ROOT/mpifxcorr/src/Makefile.am and change the paths to any of the library and include files as appropriate.
  2. Go to $CORR_ROOT/mpifxcorr/
  3. Run aclocal
  4. Run automake
  5. Run ./configure CXX=/your/mpi/path/mpicxx
  6. cd src
  7. make
That's it! You should now be able to run mpifxcorr: test it with "mpirun -np 1 $CORR_ROOT/mpifxcorr/src/mpifxcorr", you should get an error message about invoking mpifxcorr with an input file.

DiFXGUI

DiFXGUI itself is nice and simple - however, it also manages the automatic creation of model files using CALC. So I'll give the pointers to all the required libraries, and if you're implementing your own model generation, you can ignore the CALC stuff.

That's it for the basic frontend. Test with java -jar $CORR_ROOT/DiFXGUI/DiFXGUI.jar, and you should see a window pop up.

So now you can create input files for the correlator from scratch, and then go launch them manually. But you want to generate model information, select nodes to run on and create your basic input files directly from vex files don't you? If so, keep going to get and install all this ancillary stuff.

So now you have all the ancillary programs, you need to ensure the DiFXGUI is correctly pointed at them. Have a look at COMMANDS.CONFIG which you downloaded earlier, and compare the listing of commands to the contents of the $CORR_ROOT/utilities/ directory. They should all be there. If you wish to use a different program for any of the commands listed in COMMANDS.CONFIG, just change it there and put the program in the utilities/ subdirectory. Now, you will probably want to change at least the GETNODELIST, GETPBSNODELIST, GETQUEUES, and QUEUE GATEWAY entries, as these were specific to the Swinburne cluster setup. Use the existing perl scripts as a guide, and contact me for more details if you need. If you aren't using a pbs queueing system (and if you've never heard of it then you're not), you can just put dummy scripts and values in for the last three items I mentioned above.

The last thing you'll probably want to do is to put the new environment variable and execution paths into your login script (eg ~/.cshrc if you're using csh). I set CORR_ROOT, CALCDB, and add $CORR_ROOT/mpifxcorr/src/ and $CORR_ROOT/utilities/ to my PATH variable (also add the mpi bin/ subdirectory if its installed in a non-standard area). Anything you found you had to add to your LD_LIBRARY_PATH along the way, you may as well put in here too in case you want to recompile things at a future date. Also update the PERL5LIB variable to include the vex parser directory.

That's it! Fire up DiFXGUI, make sure you can create some model files and some input files, and/or take a look at the examples provided in the ascii examples tarball and data examples tar file and try launching some jobs! You'll find all the instructions on the "Running DiFX" page.