Chris@19: Chris@19: Chris@19: Planner Flags - FFTW 3.3.4 Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19: Chris@19:
Chris@19: Chris@19:

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


Chris@19:
Chris@19: Chris@19:

4.3.2 Planner Flags

Chris@19: Chris@19:

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

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

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

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

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

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

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