Changes between Version 31 and Version 32 of Examples/Fft2dHighpass


Ignore:
Timestamp:
Nov 29, 2013, 6:26:09 AM (11 years ago)
Author:
Ben Lippmeier
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Examples/Fft2dHighpass

    v31 v32  
    1111== Code ==
    1212
    13 The main algorithm is at [http://code.ouroborus.net/repa/repa-head/repa-algorithms/Data/Array/Repa/Algorithms/FFT.hs FFT.hs]
     13The main algorithm is at [https://github.com/benl23x5/repa/repa-head/repa-algorithms/Data/Array/Repa/Algorithms/FFT.hs FFT.hs]
    1414
    15 The wrapper is at [http://code.ouroborus.net/repa/repa-head/repa-examples/examples/FFT/HighPass2d/src-repa/Main.hs Main.hs]
     15The wrapper is at [https://github.com/benl23x5/repa/repa-head/repa-examples/examples/FFT/HighPass2d/src-repa/Main.hs Main.hs]
    1616
    1717== Test Data ==
     
    4242
    4343|| Version || Time(s) || Source ||
    44 || Using Data.Vector.Unboxed || 2.88 || [http://code.ouroborus.net/repa/repa-head/repa-examples/FFT/HighPass2d/legacy/vector/FFT.hs FFT.hs] ||
    45 || Using Jones's inplace C implementation || 0.24 || [http://code.ouroborus.net/repa/repa-head/repa-examples/FFT/HighPass2d/legacy/c/Jones.c Jones.c] ||
    46 || Using FFTW using Estimate mode || 0.09 || [http://code.ouroborus.net/repa/repa-head/repa-examples/FFT/HighPass2d/legacy/c/FFTW.c FFTW.c] ||
     44|| Using Data.Vector.Unboxed || 2.88 || [https://github.com/benl23x5/repa/repa-head/repa-examples/FFT/HighPass2d/legacy/vector/FFT.hs FFT.hs] ||
     45|| Using Jones's inplace C implementation || 0.24 || [https://github.com/benl23x5/repa/repa-head/repa-examples/FFT/HighPass2d/legacy/c/Jones.c Jones.c] ||
     46|| Using FFTW using Estimate mode || 0.09 || [https://github.com/benl23x5/repa/repa-head/repa-examples/FFT/HighPass2d/legacy/c/FFTW.c FFTW.c] ||
    4747
    4848The vector version uses the same recursive radix-2 decimation in time (DIT) algorithm as the Repa version, but is not rank generalised. It applies a recursive 1d FFT to each row and then transposes the matrix, twice each. Recursive FFT algorithms tend to be slower than in-place ones because intermediate data is written into new vectors at each recursion. A 512 point FFT is built from two 256 point FFTs, which are built from 4 128 point FFTs and so on. The result of each FFT is a new vector which needs to be allocated, filled, then unboxed again during the next recursion. The base case is a 2 point vector, so there are 256 of them to allocate then unbox at the lowest step.