conv:conv
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
conv:conv [2008/01/10 13:54] – deva | conv:conv [2008/01/24 11:54] – deva | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | =====Convolution implementation pages===== | + | =====Convolution implementation pages (Spring 2008 studies group under Ole Caprani)===== |
Our goal is to implement a realtime plugin to do convolution.\\ | Our goal is to implement a realtime plugin to do convolution.\\ | ||
- | The basic "Input Side" is way too slow, so we will be experimenting with a dft-multiply-idft algorithm instead.\\ | + | The basic "Input Side" is way too slow (convolution implemented with two for loops), so we will be experimenting with a dft-multiply-idft algorithm |
To do the actual fft we will use the fftw3 library (http:// | To do the actual fft we will use the fftw3 library (http:// | ||
+ | The next step is to implement at test the " | ||
+ | |||
+ | ====Group==== | ||
+ | * Jonas Suhr Christensen - // | ||
+ | * Bent Bisballe Nyeng - // | ||
+ | |||
+ | ====Analysis==== | ||
+ | The following graphs show the execution time of a single convolution iteration, using the overlap and save algorithm with various optimizations enabled. | ||
+ | The algorithm optimizations are named as follows: | ||
+ | * **Double** This is an implementation with no particular optimizations. | ||
+ | * **Float** This is a simple implementation using float as the internal datatype. | ||
+ | * **Real Double** This is an implementation using real ffts instead of complex. | ||
+ | * **Real Float** This is an implementation using real ffts instead of complex, with float as internal datatype. | ||
+ | * **MT Double** This is an implementation running on multiple CPUs. | ||
+ | * **MT Float** This is an implementation with float as internal datatype, running on multiple CPUs. | ||
+ | * **MT Real Double** This is an implementation using real ffts instead of complex, running on multiple CPUs. | ||
+ | * **MT Real Float** This is an implementation using real ffts instead of complex, with float as internal datatype, running on multiple CPUs. | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
====Links==== | ====Links==== | ||
Line 11: | Line 34: | ||
* http:// | * http:// | ||
* http:// | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
====Code==== | ====Code==== | ||
Line 116: | Line 141: | ||
#define RE 0 | #define RE 0 | ||
#define IM 1 | #define IM 1 | ||
+ | |||
static FFTW_DATATYPE *hfft = NULL; | static FFTW_DATATYPE *hfft = NULL; |
conv/conv.txt · Last modified: 2008/09/04 12:09 by deva