cannam@127: cannam@127: cannam@127: cannam@127: cannam@127:
cannam@127:cannam@127: Next: Generating your own code, Previous: Installation on non-Unix systems, Up: Installation and Customization [Contents][Index]
cannam@127:FFTW’s planner actually executes and times different possible FFT cannam@127: algorithms in order to pick the fastest plan for a given n. In cannam@127: order to do this in as short a time as possible, however, the timer must cannam@127: have a very high resolution, and to accomplish this we employ the cannam@127: hardware cycle counters that are available on most CPUs. cannam@127: Currently, FFTW supports the cycle counters on x86, PowerPC/POWER, Alpha, cannam@127: UltraSPARC (SPARC v9), IA64, PA-RISC, and MIPS processors. cannam@127:
cannam@127: cannam@127:Access to the cycle counters, unfortunately, is a compiler and/or
cannam@127: operating-system dependent task, often requiring inline assembly
cannam@127: language, and it may be that your compiler is not supported.  If you are
cannam@127: not supported, FFTW will by default fall back on its estimator
cannam@127: (effectively using FFTW_ESTIMATE for all plans).
cannam@127: 
cannam@127: 
You can add support by editing the file kernel/cycle.h; normally,
cannam@127: this will involve adapting one of the examples already present in order
cannam@127: to use the inline-assembler syntax for your C compiler, and will only
cannam@127: require a couple of lines of code.  Anyone adding support for a new
cannam@127: system to cycle.h is encouraged to email us at fftw@fftw.org.
cannam@127: 
If a cycle counter is not available on your system (e.g. some embedded
cannam@127: processor), and you don’t want to use estimated plans, as a last resort
cannam@127: you can use the --with-slow-timer option to configure (on
cannam@127: Unix) or #define WITH_SLOW_TIMER in config.h (elsewhere).
cannam@127: This will use the much lower-resolution gettimeofday function, or even
cannam@127: clock if the former is unavailable, and planning will be
cannam@127: extremely slow.
cannam@127: 
cannam@127: Next: Generating your own code, Previous: Installation on non-Unix systems, Up: Installation and Customization [Contents][Index]
cannam@127: