cannam@167: cannam@167: cannam@167: cannam@167: cannam@167:
cannam@167:cannam@167: Next: Caveats in Using Wisdom, Previous: Multi-dimensional Array Format, Up: Other Important Topics [Contents][Index]
cannam@167:FFTW implements a method for saving plans to disk and restoring them. cannam@167: In fact, what FFTW does is more general than just saving and loading cannam@167: plans. The mechanism is called wisdom. Here, we describe cannam@167: this feature at a high level. See FFTW Reference, for a less casual cannam@167: but more complete discussion of how to use wisdom in FFTW. cannam@167:
cannam@167:Plans created with the FFTW_MEASURE
, FFTW_PATIENT
, or
cannam@167: FFTW_EXHAUSTIVE
options produce near-optimal FFT performance,
cannam@167: but may require a long time to compute because FFTW must measure the
cannam@167: runtime of many possible plans and select the best one. This setup is
cannam@167: designed for the situations where so many transforms of the same size
cannam@167: must be computed that the start-up time is irrelevant. For short
cannam@167: initialization times, but slower transforms, we have provided
cannam@167: FFTW_ESTIMATE
. The wisdom
mechanism is a way to get the
cannam@167: best of both worlds: you compute a good plan once, save it to
cannam@167: disk, and later reload it as many times as necessary. The wisdom
cannam@167: mechanism can actually save and reload many plans at once, not just
cannam@167: one.
cannam@167:
cannam@167:
cannam@167:
cannam@167:
cannam@167:
Whenever you create a plan, the FFTW planner accumulates wisdom, which cannam@167: is information sufficient to reconstruct the plan. After planning, cannam@167: you can save this information to disk by means of the function: cannam@167:
int fftw_export_wisdom_to_filename(const char *filename); cannam@167:
(This function returns non-zero on success.) cannam@167:
cannam@167:The next time you run the program, you can restore the wisdom with
cannam@167: fftw_import_wisdom_from_filename
(which also returns non-zero on success),
cannam@167: and then recreate the plan using the same flags as before.
cannam@167:
int fftw_import_wisdom_from_filename(const char *filename); cannam@167:
Wisdom is automatically used for any size to which it is applicable, as
cannam@167: long as the planner flags are not more “patient” than those with which
cannam@167: the wisdom was created. For example, wisdom created with
cannam@167: FFTW_MEASURE
can be used if you later plan with
cannam@167: FFTW_ESTIMATE
or FFTW_MEASURE
, but not with
cannam@167: FFTW_PATIENT
.
cannam@167:
The wisdom
is cumulative, and is stored in a global, private
cannam@167: data structure managed internally by FFTW. The storage space required
cannam@167: is minimal, proportional to the logarithm of the sizes the wisdom was
cannam@167: generated from. If memory usage is a concern, however, the wisdom can
cannam@167: be forgotten and its associated memory freed by calling:
cannam@167:
void fftw_forget_wisdom(void); cannam@167:
Wisdom can be exported to a file, a string, or any other medium. cannam@167: For details, see Wisdom. cannam@167:
cannam@167:cannam@167: Next: Caveats in Using Wisdom, Previous: Multi-dimensional Array Format, Up: Other Important Topics [Contents][Index]
cannam@167: