CPSC 501 Notes

You should be able to get most of the information from Jordan Kidney's CPSC501 page.

I'll put up anything different on this page.

News

  1. If you are still having difficulty finding optimizations, you may deoptimize the code and apply an optimization (though there are enough optimizations in there without doing this)
  2. Remember that changing the opt flag counts as 1 (only one) optimization.
  3. Replacing division with reciprocal multiplication (multiplying by (1/n) in floating point rather than dividing by n) is a strength reduction technique. You have to maintain the number in reciprocal form to eliminate the division operations.
  4. If you're familar with pointer syntax, you may want to try replacing array lookups with pointers (data[i] to *data_i)
  5. Marking will mostly be based on methodology, actual performance gains are not that important
  6. If you're interested to see how much faster the FFT can get, check out FFTW. This includes links to papers describing how it was designed. (On another note, this page also has benchFFT software for benchmarking FFTs, which comes with several FFT implementations)
  7. For the bonus you must write an interactive gui and graphing code. Simply producing a graph is not enough. Also, please notify me by email to schedule bonus demos. Remember that the graphs are based on a windowed or chunked view of the sample. The FFT is calculated on each chunk.

Tutorial sections

My ucalgary.ca email is hyswchen.