Assignment 2
(FFT Algorithms, Timings, and Analysis)
Due Tue. July 19 at the start of class
Overview
In this assignment you will use tensor product notation to derive
a mixed-radix FFT algorithm, analyze the number of multiplications in
various FFT algorithms, and empirically time Numeric Recipes vs. FFTW.
Problems
- Let N = n1 * ... * nt. Use tensor product notation to generalize
the radix-two iterative FFT to use F_n1,...,F_nt instead of F2.
Prove your formula using properties of the tensor product and induction.
- Use induction to show that all fully expanded (leaf nodes = 1)
FFT trees for N = 2^t have the same number of multiplications (in the
twiddle factors) not equal to 1.
- Install and time FFTW for sizes N = 2^t, for t=1,...,22.
Empirically verify that the times are growing like Theta(N*lg(N)) --
compute ratios of the time for size N to N*lg(N).
- Time the code in Numeric Recipes for FFTs of size N = 2^t,
for t=1,...,22 and compare to FFTW. Produce a plot of the ratios of
the times for Numeric Recipies divided by the times for FFTW. Try
different levels of optimization when compiling the code from Numeric
Recipes. Can you think of things to do that would make the numeric
recipes code faster?
What to Hand in
You should prepare a report containing the answers to the questions
(submit a pdf file). Make sure to include all relevent information on the
computing platforms you used for the timings (i.e. the machine specs including
processor type, speed, and amount of memory (cache info if possible),
compiler specs used including type, version, and flags).