[Insight-developers] ITK-FFT's Update

Hans Johnson hans-johnson@uiowa.edu
Mon, 17 Mar 2003 12:03:25 -0600


ITK Developers,

I am working on an adaptor class to help integrate multiple FFT 
libraries with ITK.  The plan to to provide an abstract interface, and a 
compile time selected implementation of the interface.  This will allow 
SGI IRIX users to utilize their optimized complib,  Tru64 (or 
Alpha-linux) to use cxml, Intel compiler users to use the MLK, etc, etc, 
etc...

The default implementation will be to use the fftw from wwww.fftw.org. 
There is a new release in the works, and it will greatly improve it's 
abilty to be integrated with ITK.

Regards,
===================================================================
Hans J. Johnson                              W294 GH
hans-johnson@uiowa.edu                       Dept. of Psychiatry
http://www.psychiatry.uiowa.edu/~hjohnson    The University of Iowa
(319) 353-8587                               Iowa City, IA 52242
===================================================================



Dear FFTW users,

We are pleased to announce the beta release of FFTW version 3.0, now
available from our web site:

	http://www.fftw.org/

The final release is scheduled for April 19, 2003, and we are eager to
hear your feedback before that date.

Version 3.0 of FFTW has been rewritten from scratch to improve the
speed, flexibility, and generality of the library and API.  It also
adds a number of other enhancements from SIMD (SSE2/3DNow!/Altivec)
support, to optimized transforms of real even/odd data (discrete
cosine/sine transforms), to true in-place 1d transforms.  See the NEWS
file, attached below, for a more complete list of changes.

Cordially,

Steven G. Johnson
Matteo Frigo

Major goals of this release:

* Speed: often 20% or more faster than FFTW 2.x, even without SIMD (see
below).

* Complete rewrite, to make it easier to add new algorithms and
transforms.

* New API, to support more general semantics.

Other enhancements:

* SIMD acceleration on supporting CPUs (SSE, SSE2, 3DNow!, and AltiVec).
  (With special thanks to Franz Franchetti for many experimental prototypes
   and to Stefan Kral for the vectorizing generator from fftwgel.)

* True in-place 1d transforms of large sizes (as well as compressed
   twiddle tables for additional memory/cache savings).

* More arbitrary placement of real & imaginary data, e.g. including
   interleaved (as in FFTW 2.x) as well as separate real/imag arrays.

* Efficient prime-size transforms of real data.

* Multidimensional transforms can operate on a subset of a larger matrix,
   and/or transform selected dimensions of a multidimensional array.

* By popular demand, simultaneous linking to double precision (fftw),
   single precision (fftwf), and long-double precision (fftwl) versions
   of FFTW is now supported.

* Cycle counters (on all modern CPUs) are exploited to speed planning.

* Efficient transforms of real even/odd arrays, a.k.a. discrete
   cosine/sine transforms (types I-IV).  (Currently work via pre/post
   processing of real transforms, ala FFTPACK, so are not optimal.)

* DHTs (Discrete Hartley Transforms), again via post-processing
   of real transforms (and thus suboptimal, for now).

* Support for linking to just those parts of FFTW that you need,
   greatly reducing the size of statically linked programs when
   only a limited set of transform sizes/types are required.

* Canonical global wisdom file (/etc/fftw/wisdom) on Unix, along
   with a command-line tool (fftw-wisdom) to generate/update it.

* Fortran API can be used with both g77 and non-g77 compilers
   simultaneously.

* Multi-threaded version has optional OpenMP support.

* Authors' good looks have greatly improved with age.