  We describe the development of an FX style correlator for Very Long Baseline
Interferometry (VLBI), implemented in software and intended to run in
multi-processor computing environments, such as large clusters of commodity
machines (Beowulf clusters) or computers specifically designed for high
performance computing, such as multi-processor shared-memory machines. We
outline the scientific and practical benefits for VLBI correlation, these
chiefly being due to the inherent flexibility of software and the fact that the
highly parallel and scalable nature of the correlation task is well suited to a
multi-processor computing environment. We suggest scientific applications where
such an approach to VLBI correlation is most suited and will give the best
returns. We report detailed results from the Distributed FX (DiFX) software
correlator, running on the Swinburne supercomputer (a Beowulf cluster of
approximately 300 commodity processors), including measures of the performance
of the system. For example, to correlate all Stokes products for a 10 antenna
array, with an aggregate bandwidth of 64 MHz per station and using typical time
and frequency resolution presently requires of order 100 desktop-class compute
nodes. Due to the effect of Moore's Law on commodity computing performance, the
total number and cost of compute nodes required to meet a given correlation
task continues to decrease rapidly with time. We show detailed comparisons
between DiFX and two existing hardware-based correlators: the Australian Long
Baseline Array (LBA) S2 correlator, and the NRAO Very Long Baseline Array
(VLBA) correlator. In both cases, excellent agreement was found between the
correlators. Finally, we describe plans for the future operation of DiFX on the
Swinburne supercomputer, for both astrophysical and geodetic science.
