# ATNF VLBI Wiki

### Site Tools

difx:difx2.0statbased

# Differences

This shows you the differences between two versions of the page.

 difx:difx2.0statbased [2009/10/29 07:19]adamdeller difx:difx2.0statbased [2015/10/21 10:08] (current) Both sides previous revision Previous revision 2009/10/29 07:24 adamdeller 2009/10/29 07:19 adamdeller 2009/10/29 07:18 adamdeller 2009/10/29 07:17 adamdeller 2009/10/29 07:14 adamdeller 2009/10/29 07:14 adamdeller created Next revision Previous revision 2009/10/29 07:24 adamdeller 2009/10/29 07:19 adamdeller 2009/10/29 07:18 adamdeller 2009/10/29 07:17 adamdeller 2009/10/29 07:14 adamdeller 2009/10/29 07:14 adamdeller created Line 1: Line 1: + ====== DiFX2.0 station-based efficiency improvements ====== ====== DiFX2.0 station-based efficiency improvements ====== Line 7: Line 8: {{stationbased_before.png?800}} {{stationbased_before.png?800}} - However, in most situations, the phase increment from one sample (or one channel) to the next is a constant amount.  (The exception to this, quadratic approximations for fringe rotation, is handled in a piecewise linear fashion, which uses essentially the same approach as described below, with one extra step I won't detail here).  When this is the case, it is unnecessary to calculate the sin/cos for every single sample/channel.  You can do one stretch of N samples/channels, then do every Nth sample/channel after that, and fill in the gaps by complex multiplying the first N channels with every Nth channel as shown below: + However, in most situations, the phase increment from one sample (or one channel) to the next is a constant amount.  (The exception to this, quadratic approximations for fringe rotation, is handled in a piecewise linear fashion, which uses essentially the same approach as described below, with one extra step I won't detail here).  When this is the case, it is unnecessary to calculate the sin/cos for every single sample/channel of the N you have.  You can do one stretch of M samples/channels, then do every Mth sample/channel after that, and fill in the gaps by complex multiplying the first M channels with every Mth channel as shown below: {{stationbased_after.png?800}} {{stationbased_after.png?800}} - This slashes the number of sin/cos operations needed, which is a big saving because they are actually rather expensive.  In DiFX1.5, sin/cos operations dominate the station-based cost; in DiFX2.0, the FFT dominates, which is as it should be. + This slashes the number of sin/cos operations needed, which is a big saving because they are actually rather expensive.  Rather than doing N sin/cos operations, you are now doing M + N/M.  For N=1024 and M=32, that means you are doing 64 instead of 1024 - a saving of a factor of 16.  The complex multiplications to fill in the gaps are much cheaper and can be considered virtually negligible.  In DiFX1.5, sin/cos operations dominate the station-based cost; in DiFX2.0, the FFT dominates, which is as it should be.