Multiple threads running in DSP code

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

DaveHoskins wrote:Thanks.
The smallest frequency domain is 256 samples, and the latency is brought to zero with SSE code in time domain convolution at the beginning.

From very basic tests my FHT came in just slightly slower than FFTW which I'm perfectly happy with! :)
Yeah, it surprised me as well, but I did work hard to achieve it.

Dave.

*edit*
I don't think FFTW is actually free?
In what language did you write your FHT?!?

fftw is now free for both commercial and non commercial use: http://www.fftw.org/faq/section1.html#isfftwfree

Post

Ciozzi wrote: In what language did you write your FHT?!?

fftw is now free for both commercial and non commercial use: http://www.fftw.org/faq/section1.html#isfftwfree
Ermm .. that sounds too good to be true I'm afraid

Paragraph 1.4 explicitely states this:
The non-free licenses are for companies that wish to use FFTW in their products but are unwilling to release their software under the GPL (which would require them to release source code and allow free redistribution). Such users can purchase an unlimited-use license from MIT. Contact us for more details.

Post

AXP wrote:
DaveHoskins wrote:I'm not converting the FHT into an FFT, I'm doing everything in the Hartley domain. It's FAST!...Oh never mind.
Doesn't FHT require a few more operations than an FFT?
I've never actually used the Hartley transform, so I might be missing something.
It does require a few more operations, but in FFT/FHT implementations the processing time is often not dominated by the math we do but by waiting on memory accesses. At least this is true with the out of order CPUs we are working with these days.

It is very possible that the FHT runs at the same speed as the corresponding FFT because the little extra time for math would be otherwise spent for waiting for the bus to deliver data.

The situation is of course different if all your data is already in the CPU cache, and if your blocksize is so small that you will not see any cache misses.


Btw: For those who never used the Hartley transform: It is quite a nice transform to work with because you will only work with real numbers. No complex arithmetic anywhere, no mirrored negative frequency spectrum to worry about. You can think of it as a FFT with sines shifted in phase by 45°, and you can undo the phase shift after the FHT to get complex FFT output (and vice versa).

If you want phase/magnitude output you can also directly calculate this from the FHT as well.

Nils

Post

DaveHoskins wrote: Btw: For those who never used the Hartley transform: It is quite a nice transform to work with because you will only work with real numbers. No complex arithmetic anywhere, no mirrored negative frequency spectrum to worry about. You can think of it as a FFT with sines shifted in phase by 45°, and you can undo the phase shift after the FHT to get complex FFT output (and vice versa).

If you want phase/magnitude output you can also directly calculate this from the FHT as well.

Nils
Thank you for detailed explanation. I'm definitely exploring FHT the next time I need to get into the frequency domain.

Post Reply

Return to “DSP and Plugin Development”