Chris@10: Chris@10: Chris@10: Planner Flags - FFTW 3.3.3 Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10:
Chris@10: Chris@10:

Chris@10: Next: , Chris@10: Previous: Complex DFTs, Chris@10: Up: Basic Interface Chris@10:


Chris@10:
Chris@10: Chris@10:

4.3.2 Planner Flags

Chris@10: Chris@10:

All of the planner routines in FFTW accept an integer flags Chris@10: argument, which is a bitwise OR (‘|’) of zero or more of the flag Chris@10: constants defined below. These flags control the rigor (and time) of Chris@10: the planning process, and can also impose (or lift) restrictions on the Chris@10: type of transform algorithm that is employed. Chris@10: Chris@10:

Important: the planner overwrites the input array during Chris@10: planning unless a saved plan (see Wisdom) is available for that Chris@10: problem, so you should initialize your input data after creating the Chris@10: plan. The only exceptions to this are the FFTW_ESTIMATE and Chris@10: FFTW_WISDOM_ONLY flags, as mentioned below. Chris@10: Chris@10:

In all cases, if wisdom is available for the given problem that was Chris@10: created with equal-or-greater planning rigor, then the more rigorous Chris@10: wisdom is used. For example, in FFTW_ESTIMATE mode any available Chris@10: wisdom is used, whereas in FFTW_PATIENT mode only wisdom created Chris@10: in patient or exhaustive mode can be used. See Words of Wisdom-Saving Plans. Chris@10: Chris@10:

Planning-rigor flags
Chris@10: Chris@10: Chris@10: Chris@10:
Algorithm-restriction flags
Chris@10: Chris@10: Chris@10: Chris@10:
Limiting planning time
Chris@10: Chris@10:
     extern void fftw_set_timelimit(double seconds);
Chris@10: 
Chris@10:

Chris@10: This function instructs FFTW to spend at most seconds seconds Chris@10: (approximately) in the planner. If seconds == Chris@10: FFTW_NO_TIMELIMIT (the default value, which is negative), then Chris@10: planning time is unbounded. Otherwise, FFTW plans with a Chris@10: progressively wider range of algorithms until the the given time limit Chris@10: is reached or the given range of algorithms is explored, returning the Chris@10: best available plan. Chris@10: Chris@10: Chris@10:

For example, specifying FFTW_PATIENT first plans in Chris@10: FFTW_ESTIMATE mode, then in FFTW_MEASURE mode, then Chris@10: finally (time permitting) in FFTW_PATIENT. If Chris@10: FFTW_EXHAUSTIVE is specified instead, the planner will further Chris@10: progress to FFTW_EXHAUSTIVE mode. Chris@10: Chris@10:

Note that the seconds argument specifies only a rough limit; in Chris@10: practice, the planner may use somewhat more time if the time limit is Chris@10: reached when the planner is in the middle of an operation that cannot Chris@10: be interrupted. At the very least, the planner will complete planning Chris@10: in FFTW_ESTIMATE mode (which is thus equivalent to a time limit Chris@10: of 0). Chris@10: Chris@10: Chris@10: Chris@10: