[patch] Fast convolution expression templates

Don McCoy don at codesourcery.com
Thu Apr 12 17:27:51 UTC 2007


The attached patch adds expression templates to support these 
single-line, multiple-row fast convolutions using unique weights for 
each row ('weights_' is a matrix as well).

   out = inv_fftm_(weights_ * for_fftm_(in)));

and

   out = inv_fftm_(for_fftm_(in) * weights_));


Note: the weights must be transformed into the frequency space prior to 
calling.  If using the Cell/B.E. back end, this may be avoided by 
calling the cbe::Fastconv object directly, but pre-transforming the 
weights is preferred for the performance advantage it offers.  This 
differs from the 'vector of coefficients' case where the cost of the 
single FFT required to do the transform is negligible due to the fact 
that the kernel is able to store the transformed kernel and use it 
multiple times (provided the instance of the Fastconv object does not 
change).


New test cases and benchmark cases are provided as well.

Regards,

-- 
Don McCoy
don (at) CodeSourcery
(888) 776-0262 / (650) 331-3385, x712

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: fcb.changes
URL: <http://sourcerytools.com/pipermail/vsipl++/attachments/20070412/7e0367be/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: fcb.diff
URL: <http://sourcerytools.com/pipermail/vsipl++/attachments/20070412/7e0367be/attachment-0001.ksh>


More information about the vsipl++ mailing list