difx:difx2.0statbased

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

Both sides previous revision Previous revision Next revision | Previous revision | ||

difx:difx2.0statbased [2009/10/29 07:19] adamdeller |
difx:difx2.0statbased [2015/10/21 10:08] (current) |
||
---|---|---|---|

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. |

difx/difx2.0statbased.txt · Last modified: 2015/10/21 10:08 (external edit)