FFTW-WISDOM(1)
π FFTW-WISDOM(1) π
okay bestie, grab a strawberry π and sit down, because we're about to talk about the fftw manual page for fftwf-wisdom, and it's genuinely iconic. this is the group chat version, but fr fr every single fact stays exactly where it was. no cap. π«Ά
β¨ NAME β¨
fftwf-wisdom β the little utility that creates wisdom (pre-optimized FFTs). yes, "wisdom". it's giving ancient scrolls but it's actually just math. π
πΈ SYNOPSIS πΈ
fftwf-wisdom [OPTION]... [SIZE]...
π¦ DESCRIPTION π¦
so fftwf-wisdom is a utility that generates FFTW wisdom files. and what are those? they're saved info about how to optimally compute (Fourier) transforms of various sizes. like, it does the homework once so your program doesn't have to. πβ¨
FFTW itself is a free library that computes discrete Fourier transforms in one or more dimensions, for arbitrary sizes, and for both real and complex data, among other related operations. more info on FFTW lives 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. and lowkey, it's likely that lots of FFTW-using programs will load the system wisdom file, which by default is stored in /etc/fftw/wisdomf. fftwf-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:
fftwf-wisdom -v -c -o wisdomf
β οΈ heads up bestie: this will take many hours, which can be limited by the-toption. and then the outputwisdomffile can be copied (as root) to/etc/fftw/or whatever. slay.
fftwf-wisdom normally writes the wisdom directly to standard output, but that can be changed via the -o option, like in the example above. π
if the system wisdom file /etc/fftw/wisdomf already exists, then fftwf-wisdom reads this existing wisdom (unless the -n option is specified) and outputs both the old wisdom and any newly created wisdom. so it can be used to add new transform sizes to the existing system wisdom (or another wisdom file, with the -w option). it's additive, it's collaborative, it's main character energy. π
π SPECIFYING SIZES π
even though a canonical set of sizes to optimize is specified by the -c option, you can also specify zero or more non-canonical transform sizes and types to optimize, via the SIZE arguments that follow the option flags. alternatively, the sizes to optimize can be read from standard input (whitespace-separated), if a SIZE argument of "-" is supplied. flexible queen. π
sizes are specified by the syntax:
<type><inplace><direction><geometry>
<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. iykyk. π
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. and 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). literally so specific and i love that for it. ππ
π OPTIONS π
-h,--helpβ display help on the command-line options and usage. the "bestie explain" button.-V,--versionβ print the version number and copyright information.-v,--verboseβ verbose output. you can specify this multiple times, or supply a numeric argument greater than 1, to increase the verbosity level. π₯ note that the verbose output will be mixed with the wisdom output (making it impossible to import), unless you write the wisdom to a file via the-ooption. so, yeah, keep them separated.-c,--canonicalβ optimize/pre-plan a canonical set of sizes: all powers of two and ten up to2^20(1048576), including both real and complex, forward and backwards, in-place and out-of-place transforms. also includes two- and three-dimensional transforms of equal-size dimensions (e.g.16x16x16). it's a whole buffet. π-t hours,--time-limit=hoursβ stop after a time of hours (hours) has elapsed, outputting accumulated wisdom. (the problems are planned in increasing order of size.) defaults to0, indicating no time limit. so0= go until the heat death of the universe, respectfully. β³-o file,--output-file=fileβ send wisdom output to file rather than to standard output (the default).-m,--measure;-e,--estimate;-x,--exhaustiveβ normally,fftwf-wisdomcreates plans inFFTW_PATIENTmode, but with these options you can instead useFFTW_MEASURE,FFTW_ESTIMATE, orFFTW_EXHAUSTIVEmodes, respectively, as described in more detail by the FFTW manual.- 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
--exhaustivemode). mix and match, we love a versatile icon. β¨
- 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
-n,--no-system-wisdomβ do not import the system wisdom from/etc/fftw/wisdomf(which is normally read by default). independent era. π-w file,--wisdom-file=fileβ import wisdom from file (in addition to the system wisdom, unless-nis specified). multiple wisdom files can be read via multiple-woptions. if file is"-", then read wisdom from standard input.-T N,--threads=Nβ plan withNthreads. π§ this option is only present if FFTW was configured with thread support. no threads, no option, sorry bestie.
π BUGS π
send bug reports to fftw@fftw.org. they're nice, i promise. π«Ά
π AUTHORS π
written by Steven G. Johnson and Matteo Frigo.
Copyright (c) 2003, 2007-14 Matteo Frigo
Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
π SEE ALSO π
and that's the whole page, bestie! this one's from the fftw manual, dated February, 2003. go forth and pre-plan your transforms. periodt. πβ¨ππ¦πΈ
π¦ where this page comes from
- alpine 3.22: fftw-doc 3.3.10-r6 Β· GPL-2.0-or-later
- alpine 3.23: fftw-doc 3.3.10-r7 Β· GPL-2.0-or-later
- alpine 3.24: fftw-doc 3.3.11-r0 Β· GPL-2.0-or-later
- arch rolling: fftw 3.3.11-1 Β· GPL-2.0-or-later
- centos-stream 10: fftw 3.3.11-1.el10 Β· GPL-2.0-or-later AND MIT AND BSD-2-Clause
- centos-stream 9: fftw 3.3.8-14.el9 Β· GPLv2+
- centos-stream 9: fftw 3.3.8-14.el9 Β· GPLv2+
- debian bookworm: libfftw3-bin 3.3.10-1 Β· GPL-2.0-or-later
- debian trixie: libfftw3-bin 3.3.10-2+b1 Β· GPL-2.0-or-later
- fedora 43: fftw 3.3.10-16.fc43 Β· GPL-2.0-or-later AND MIT AND BSD-2-Clause
- fedora 43: fftw 3.3.10-16.fc43 Β· GPL-2.0-or-later AND MIT AND BSD-2-Clause
- fedora 44: fftw 3.3.10-17.fc44 Β· GPL-2.0-or-later AND MIT AND BSD-2-Clause
- fedora 44: fftw 3.3.10-17.fc44 Β· GPL-2.0-or-later AND MIT AND BSD-2-Clause
- nixpkgs unstable: fftw-single 3.3.11
- opensuse-leap 16.0: fftw3-devel 3.3.10-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: fftw3-devel 3.3.10-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: fftw3-devel 3.3.10-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: fftw3-devel 3.3.10-160000.2.2 Β· GPL-2.0-or-later
- ubuntu jammy: libfftw3-bin 3.3.8-2ubuntu8
- ubuntu noble: libfftw3-bin 3.3.10-1ubuntu3 Β· GPL-2.0-or-later
- ubuntu questing: libfftw3-bin 3.3.10-2fakesync1build2
- ubuntu resolute: libfftw3-bin 3.3.10-2fakesync1build3 Β· GPL-2.0-or-later
- ubuntu stonking: libfftw3-bin 3.3.11-1 Β· GPL-2.0-or-later
- Copyright (c) 2003, 2007-14 Matteo Frigo
- Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms