fftwl-wisdom is a utility to generate FFTW wisdom files, which contain saved information about how to optimally compute (Fourier) transforms of various sizes. FFTW is a free library to compute discrete Fourier transforms in one or more dimensions, for arbitrary sizes, and of both real and complex data, among other related operations. More information on FFTW can be found at the FFTW home page: http://www.fftw.org
Programs using FFTW can be written to load wisdom from an arbitrary file, string, or other source. Moreover, it is likely that many FFTW-using programs will load the system wisdom file, which is stored in /etc/fftw/wisdoml by default. fftwl-wisdom can be used to create or add to such wisdom files. In its most typical usage, the wisdom file can be created to pre-plan a canonical set of sizes (see below) via:
(this will take many hours, which can be limited by the -t option) and the output wisdoml file can then be copied (as root) to /etc/fftw/ or whatever.
The fftwl-wisdom program normally writes the wisdom directly to standard output, but this can be changed via the -o option, as in the example above.
If the system wisdom file /etc/fftw/wisdoml already exists, then fftwl-wisdom reads this existing wisdom (unless the -n option is specified) and outputs both the old wisdom and any newly created wisdom. In this way, it can be used to add new transform sizes to the existing system wisdom (or other wisdom file, with the -w option).
Sizes are specified by the syntax:
<type> is either 'c' (complex), 'r' (real, r2c/c2r), or 'k' (r2r, per-dimension kinds, specified in the geometry, below).
<inplace> is either 'i' (in place) or 'o' (out of place).
<direction> is either 'f' (forward) or 'b' (backward). The <direction> should be omitted for 'k' transforms, where it is specified via the geometry instead.
<geometry> is the size and dimensionality of the transform, where different dimensions are separated by 'x' (e.g. '16x32' for a two-dimensional 16 by 32 transform). In the case of 'k' transforms, the size of each dimension is followed by a "type" string, which can be one of f/b/h/e00/e01/e10/e11/o00/o01/o10/o11 for R2HC/HC2R/DHT/REDFT00/.../RODFT11, respectively, as defined in the FFTW manual.
For example, 'cif12x13x14' is a three-dimensional 12 by 13 x 14 complex DFT operating in-place. 'rob65536' is a one-dimensional size-65536 out-of-place complex-to-real (backwards) transform operating on Hermitian-symmetry input. 'ki10hx20e01' is a two-dimensional 10 by 20 r2r transform where the first dimension is a DHT and the second dimension is an REDFT01 (DCT-III).
Note that wisdom is tagged with the planning patience level, and a single file can mix different levels of wisdom (e.g. you can mostly use the patient default, but plan a few sizes that you especially care about in --exhaustive mode).